我已在 192.168.1.124 上安装了 Nginx 代理管理器(作为 Docker 映像),并添加了位于 192.168.1.186 的 GitLab 服务器。当我将 gitlab.rb 文件中的 external_url 设置为 http://192.168.1.186 时,我可以通过 git.payhas.com 访问我的 GitLab 服务器。但是,当我将 gitlab.rb 中的 external_url 更改为 https://git.payhas.com 时,它显示 404 Not Found。
这是我的 /etc/nginx/sites-available/default conf 文件(在 192.168.1.186 上):
server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.html index.htm index.nginx-debian.html; server_name _; location / { try_files $uri $uri/ =404; } }
这是我的 /etc/nginx/sites-available/gitlab conf 文件(位于 192.168.1.186)(来自官方页面:https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/支持/nginx/gitlab):
upstream gitlab-workhorse { server unix:/home/git/gitlab/tmp/sockets/gitlab-workhorse.socket fail_timeout=0; } map $http_upgrade $connection_upgrade_gitlab { default upgrade; close; } log_format gitlab_access '$remote_addr - $remote_user [$time_local] "$request_method $gitlab_filtered_request_uri $server_protocol" $status $body_bytes_sent "$gitlab_filtered_http_referer" "$http_user_agent"'; map $request_uri $gitlab_temp_request_uri_1 { default $request_uri; ~(?i)^(?<start>.)(?<temp>[?&]private[-_]token)=[^&](?<rest>.*)$ "$start$temp=[FILTERED]$rest"; } map $gitlab_temp_request_uri_1 $gitlab_temp_request_uri_2 { default $gitlab_temp_request_uri_1; ~(?i)^(?<start>.)(?<temp>[?&]authenticity[-_]token)=[^&](?<rest>.*)$ "$start$temp=[FILTERED]$rest"; } map $gitlab_temp_request_uri_2 $gitlab_filtered_request_uri { default $gitlab_temp_request_uri_2; ~(?i)^(?<start>.)(?<temp>[?&]feed[-_]token)=[^&](?<rest>.*)$ "$start$temp=[FILTERED]$rest"; } map $http_referer $gitlab_filtered_http_referer { default $http_referer; ~^(?<temp>.*)? $temp; } server { listen 0.0.0.0:80; listen [::]:80; server_name git.payhas.com; server_tokens off; real_ip_header X-Real-IP; real_ip_recursive off; access_log /var/log/nginx/gitlab_access.log gitlab_access; error_log /var/log/nginx/gitlab_error.log; location / { client_max_body_size 0; gzip off; proxy_read_timeout 300; proxy_connect_timeout 300; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade_gitlab; proxy_pass http://gitlab-workhorse; } error_page 404 /404.html; error_page 422 /422.html; error_page 500 /500.html; error_page 502 /502.html; error_page 503 /503.html; location ~ ^/(404|422|500|502|503).html$ { root /home/git/gitlab/public; internal; } }
在gitlab.rb文件中设置:
external_url 'https://git.payhas.com' nginx['enable'] = false web_server['external_users'] = ['www-data'] gitlab_rails['trusted_proxies'] = [ '192.168.1.124/24' ] nginx['listen_port'] = 80 nginx['listen_https'] = false
还在 192.168.1.186 中将 www-data 用户添加到 gitlab-www 组。
在 192.168.1.124 上的 nginx 代理管理器中设置:
域名:git.payhas.com 方案:http 转发IP:192.168.1.186 转发端口:80
所有这些都在 ubuntu 22.04 服务器版本中运行:
Nginx 代理管理器(作为 192.168.1.124 中的 docker 镜像) Gitlab CE(在 192.168.1.186 的普通 ubuntu 上运行) Gitlab-runner(在 192.168.1.165 的普通 ubuntu 上运行)
我根据https://docs.gitlab.com/omnibus/settings/nginx.html#use-a-non-bundled-web-server的文档进行了尝试。但是,当我尝试使用 git.payhas.com 浏览时,我仍然遇到问题。当我使用其 IP 浏览器时,它完全可以工作。
由于我找不到任何合适的解决方案,我决定重新安装整个gitlab ce服务器并设置域名而不是IP,一切顺利。另外,我指定了 http,然后我通过代理管理器节点为我的新域需要 ssl。 这很简单。我一开始搞砸了,浪费了我整个星期)