GitLab por trás do nginx não funciona

1

Meu GitLab está sendo executado na porta 9999 e pode ser acessado usando o URL abaixo

link (que redireciona para link )

ou pode ser acessado diretamente no URL abaixo link

Eu configurei o nginx para escutar na porta 443. Aqui está como minha configuração atual se parece.

server {
        client_max_body_size 40M;
        listen 443;
        server_name server01.example.com;

        location /gitlab/ {
                rewrite ^/.* http://$server_name/gitlab/users/sign_in permanent;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-NginX-Proxy true;
                proxy_pass http://127.0.0.1:9999/users/sign_in/;
                proxy_redirect off;
        }
}

Quando tento acessar o link

Está sendo redirecionado para o seguinte URL,

link

e diga-me "página não encontrada erro". O log de erros do Nginx mostra o seguinte.

2018/07/15 07:09:37 [error] 20300#0: *3 open() "/usr/share/nginx/html/gitlab/users/sign_in" failed (2: No such file or directory), client: xx.xxx.xxx.xxx, server: _, request: "GET /gitlab/users/sign_in HTTP/1.1", host: "server01.example.com"

Update1:

Configuração atual:

server {
        client_max_body_size 40M;
        listen 443 ssl;
        server_name server01.example.com;
        ssl_certificate /etc/nginx/ssl/tlscert.crt;
        ssl_certificate_key /etc/nginx/ssl/private.key;

        location /gitlab/ {
                rewrite ^/.* https://$server_name/gitlab/users/sign_in/ permanent;
                proxy_pass http://127.0.0.1:9999/;
                proxy_redirect http://127.0.0.1:9999/ https://$server_name/gitlab/;
        }
}

https://server01.example.com/gitlab/users/sign_in

This page isn’t working server01.example.com redirected you too many times. Try clearing your cookies. ERR_TOO_MANY_REDIRECTS

    
por Gokulnath Kumar 15.07.2018 / 09:29

2 respostas

1

Seria útil se você especificasse sua versão nginx (a versão do gitlab, a distribuição do linux e a versão também não prejudicariam).

Eu provavelmente usaria alguns ajustes na sua configuração, desabilitar o redirecionamento e enviar os cabeçalhos para o proxy:

server {
        listen 443 ssl;
        server_name server01.example.com;

        client_max_body_size 40M;

        ssl_certificate /etc/nginx/ssl/tlscert.crt;
        ssl_certificate_key /etc/nginx/ssl/private.key;

        location /gitlab/ {
                proxy_pass http://127.0.0.1:9999/;
                proxy_redirect    off;

                proxy_set_header  X-Real-IP  $remote_addr;
                proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header  Host $http_host;

        }
}

Se isso não funcionar ( isso dependerá da sua versão nginx ) tente algo com uma reescrita, como:

server {
        listen 443 ssl;
        server_name server01.example.com;

        client_max_body_size 40M;

        ssl_certificate /etc/nginx/ssl/tlscert.crt;
        ssl_certificate_key /etc/nginx/ssl/private.key;

        location /gitlab/ {
                rewrite ^/gitlab(/.*)$ $1 break;
                proxy_pass http://127.0.0.1:9999/;
                proxy_redirect    off;

                proxy_set_header  X-Real-IP  $remote_addr;
                proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header  Host $http_host;

        }
}

Mas eu deixaria o redirecionamento de qualquer forma. Eu acho que isso está causando seus problemas.

    
por 16.07.2018 / 08:50
1

Isso porque você redireciona para http:// , não https:// :

rewrite ^/.* http://$server_name/gitlab/users/sign_in permanent;

Além disso, com proxy_pass http://127.0.0.1:9999/users/sign_in/; , seu /gitlab/ tem apenas a página de login. Com base no seu rewrite , você não está tentando fazer isso. Você não deveria ter, por exemplo,

server {
    client_max_body_size 40M;
    listen 443 ssl;
    server_name server01.example.com;
    # All the missing SSL configuration

    location /gitlab/ {
        #rewrite ^/gitlab/$ https://$server_name/gitlab/users/sign_in permanent;
        proxy_pass http://127.0.0.1:9999/;
        proxy_redirect http://127.0.0.1:9999/ https://$server_name/gitlab/;
    }
}

O GitLab já está fazendo o redirecionamento, o rewrite pode ser desnecessário com proxy_redirect .

    
por 15.07.2018 / 09:54

Tags