Я пытаюсь настроить Nginx на одном сервере для маршрутизации к установке GitLab по умолчанию на другом сервере (192.168.1.3) через обратный прокси-сервер, чтобы GitLab работал по пути http: // myserver / gitlab, https: // myserver / gitlab, http://192.168.1.3, и https://192.168.1.3. Однако я думаю, что столкнулся с проблемой, поскольку сервер с GitLab также использует Nginx в качестве собственного обратного прокси. Таким образом, я не уверен, как настроить Nginx на обоих серверах для правильной работы GitLab.
Вот текущая конфигурация Nginx на главном сервере Nginx:
server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
server_name myserver;
location / {
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass $scheme://192.168.1.4;
}
location ~/gitlab/(.*)$ {
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass $scheme://192.168.1.3/$1;
}
}
Вот конфигурация Nginx по умолчанию на сервере GitLab:
upstream gitlab {
server unix:/home/git/gitlab/tmp/sockets/gitlab.socket fail_timeout=0;
}
upstream gitlab-workhorse {
server unix:/home/git/gitlab/tmp/sockets/gitlab-workhorse.socket fail_timeout=0;
}
server {
listen 0.0.0.0:80;
include /etc/nginx/include/gitlab-proxy;
}
server {
listen 0.0.0.0:443 ssl;
include /etc/nginx/include/ssl;
include /etc/nginx/include/gitlab-proxy;
}
Вот что находится в / etc / nginx / include / gitlab-proxy:
root /home/git/gitlab/public;
access_log /var/log/nginx/gitlab.access.log;
error_log /var/log/nginx/gitlab.error.log;
location / {
try_files $uri $uri/index.html $uri.html @gitlab;
}
location @gitlab {
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://gitlab;
proxy_redirect off;
proxy_buffering off;
}
location ~ [-\/\w\.]+\.git\/ {
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://gitlab-workhorse;
proxy_redirect off;
proxy_buffering off;
proxy_connect_timeout 300;
proxy_read_timeout 300;
}
Имя хоста gitlab адресовано 127.0.0.1 на сервере GitLab.
К вашему сведению, этот вопрос похож на вопрос Вот за исключением того, что он, в частности, запрашивает SSL. Среда GitLab GITLAB_RELATIVE_URL_ROOT изменена. Это то, что я не знаю, как изменить или даже хочу изменить, поскольку я хочу, чтобы он был по-прежнему доступен через http://192.168.1.3 и https://192.168.1.3. Также он использует контейнер Docker для Nginx.