GitLab 可通过 IP 访问,但通过 Nginx 代理管理器进行域配置时出现 404 错误

问题描述 投票:0回答:1

我已在 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 nginx-config
1个回答
0
投票

由于我找不到任何合适的解决方案,我决定重新安装整个gitlab ce服务器并设置域名而不是IP,一切顺利。另外,我指定了 http,然后我通过代理管理器节点为我的新域需要 ssl。 这很简单。我一开始搞砸了,浪费了我整个星期)

© www.soinside.com 2019 - 2024. All rights reserved.