嗯,看起来答案就在我眼前
gitlab.rb
nginx['custom_nginx_config']
,有
nginx['custom_gitlab_server_config']
. 我把include语句放在那里,删除了
server {}
重写规则的括号。GitLab文档中也描述了这一点
https://docs.gitlab.com/omnibus/settings/nginx.html#inserting-custom-nginx-settings-into-the-gitlab-server-block
:
这会将定义的字符串插入到
/var/opt/gitlab/nginx/conf/gitlab-http.conf
.
我就是这么做的:
-
在
/etc/gitlab/gitlab.rb
,注释掉
nginx['custom\u nginx\u config']
nginx['custom_gitlab_server_config'] = "include /etc/nginx/conf.d/redirect.conf;"
-
/etc/nginx/conf.d/redirect.conf
,只保留重写行:
rewrite ^\/itext7\/samples\/(blob|raw)\/master\/(?!samples\/)(.*)$ https://$server_name/itext7/samples/$1/master/samples/$2 permanent;
-
重新配置GitLab:
sudo gitlab-ctl reconfigure
-
sudo gitlab-ctl restart nginx
-
验证nginx配置:
sudo /opt/gitlab/embedded/sbin/nginx -p /var/opt/gitlab/nginx -T | tail -n 20
nginx: the configuration file /var/opt/gitlab/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /var/opt/gitlab/nginx/conf/nginx.conf test is successful
include /etc/nginx/conf.d/redirect.conf;
}
rewrite ^\/itext7\/samples\/(blob|raw)\/master\/(?!samples\/)(.*)$ https://$server_name/itext7/samples/$1/master/samples/$2 permanent;
server {
listen 127.0.0.1:8060;
server_name localhost;
location /nginx_status {
stub_status on;
server_tokens off;
access_log off;
allow 127.0.0.1;
deny all;
}
}
-
curl -I https://gitlab.itextsupport.com/itext/tutorial/blob/master/signatures/src/main/java/signatures/chapter4/C4_05_SignWithBEID.java
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 27 Sep 2018 11:32:23 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://gitlab.itextsupport.com/itext/tutorial/blob/master/samples/signatures/src/main/java/signatures/chapter4/C4_05_SignWithBEID.java
Strict-Transport-Security: max-age=31536000
有一件事我仍然很好奇:
-
这个
rewrite
排队结束了
外部
这个
server{}
-
这个
行使用
$server_name
变量。
-
$server\u名称
变量已定义
里面
这个
阻止。
这在视觉上是不是因为包含语句的方式很奇怪
nginx -T
? 是
真的吗
里面
服务器{}
外部