Назад | Перейти на главную страницу

Конфигурация Nginx для GitLab как подкаталог домена

Я пытаюсь настроить 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.