GitLab 的 Web 服务应该限制只有制定域名可以访问,防止其它非备案的解析,对于独立运行的 nginx 这非常简单。虽然 GitLab 的 Web 服务由 nginx 提供,但其配置文件由 gitlab-ctl reconfigure 自动生产,不应该手工更改 nginx 的配置文件,因为会被 reconfigure 覆盖,应该通过修改 gitlab.rb 来控制 nginx 配置。又因在 gitlab 生成的 nginx 配置中使用了 default_server ,所以在额外的配置中只能使用正则负向先行断言。
通过修改 gitlab.rb 或者环境变量插入一个 nginx 配置文件
nginx['custom_nginx_config'] = "include /etc/gitlab/nginx-default.conf;"
nginx-default.conf 配置文件内容如下
server {
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name ~^(?!git\.yaoge123\.com$).*$;
server_tokens off;
ssl_reject_handshake on;
return 444;
}