使用 GitLab Omnibus 自带的 Nginx 配置其它网站

在使用 GitLab Omnibus 模式安装 GitLab 环境时,是自动使用一个自带的 Nginx 运行环境进行网页服务的,在 GitLab 14.9 版本时,该 Nginx 为 1.20 版本,由于一般情况下,一台服务器内只能运行一个网页服务器(因为 80 和 443 端口在不同的软件内不容易进行共享),所以衍生了这个需求,即使用 GitLab Omnibus 自带的 Nginx 配置其它网站。

确认 Nginx conf 位置

以下为自带的 Nginx 的配置文件位置:

cd /var/opt/gitlab/nginx/conf/

可以很清晰地发现,gitlab-http.conf 为 GitLab 网页服务的配置文件,而 nginx.conf 为 Nginx 的默认配置文件。

有了这些配置文件的详细位置,我们就可以很轻松地达到想要的功能了。

新建自己网页服务器的 Nginx 配置文件

vi /var/opt/gitlab/nginx/conf/web.conf

以下为 Nextcloud 的反向代理示例配置,你需要更改 drive.example.com 为你的域名,并配置安全证书路径:

server {
  listen 80;
  listen [::]:80;
  server_name drive.example.com;
  return 301 https://$server_name$request_uri;
}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name drive.example.com;

  ssl_certificate /var/opt/gitlab/nginx/conf/cert/drive.example.com/fullchain.pem;
  ssl_certificate_key /var/opt/gitlab/nginx/conf/cert/drive.example.com/privkey.pem;

  add_header X-Content-Type-Options nosniff;
  add_header X-XSS-Protection "1; mode=block";
  add_header X-Robots-Tag none;
  add_header X-Download-Options noopen;
  add_header X-Permitted-Cross-Domain-Policies none;
  add_header Strict-Transport-Security "max-age=15768000";

  location = /.well-known/carddav {
    return 301 $scheme://$host/remote.php/dav;
  }
  location = /.well-known/caldav {
    return 301 $scheme://$host/remote.php/dav;
  }

  client_max_body_size 512M;
  fastcgi_buffers 64 4K;

  gzip on;
  gzip_vary on;
  gzip_comp_level 3;
  gzip_min_length 1024;
  gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
  gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; 

  location / {
    # proxy_http_version 1.1;
    proxy_buffering off;
    proxy_set_header Host $http_host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # proxy_redirect off;
    proxy_pass http://localhost:51404;
  }
}

配置 Nginx

编辑 Nginx 的配置文件:

vi /var/opt/gitlab/nginx/conf/nginx.conf

在文件底部添加如下引用配置:

  include /var/opt/gitlab/nginx/conf/web.conf;

最后重启 GitLab Nginx 服务即可:

gitlab-ctl restart nginx

添加新评论