Correspondência de localização Nginx funcionando apenas quando a raiz correspondente

3

Estou tentando configurar o nginx para poder ter dois locais. Um para minha API de nó e outro para meu IC de Jenkins.

http://my_ip/api deve apontar para o meu servidor de nó e http://my_ip/jenkins deve apontar para meu CI de Jenkins

Eu tenho esse bloco de servidores.

server {
listen 80;

server_name my_ip_address;

location /api {
    proxy_pass http://127.0.0.1:1234;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
}

location /jenkins {

   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-Forwarded-Proto $scheme;

   proxy_pass          http://localhost:8080;
   proxy_read_timeout  90;

}
}

Essa configuração não está funcionando. Mas se eu usar qualquer um desses locais correspondentes ao root, isso funciona.

Isso funciona sem problemas. E o mesmo se eu usar o bloco de localização da minha API de nó com / apenas.

location / {

   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-Forwarded-Proto $scheme;

   proxy_pass          http://localhost:8080;
   proxy_read_timeout  90;

}

Mas se eu alterar / para /jenkins , isso não funcionará mais.

Eu sei que estou perdendo um pouco de conhecimento básico aqui, mas não consigo entender isso, já que todo lugar que eu pareço parece sugerir que deveria estar funcionando bem.

    
por limoragni 11.03.2016 / 15:32

1 resposta

2

Bem, depois de mais algumas pesquisas sobre o assunto, notei que o problema com essa configuração era que o local / api não estava se conectando ao http://127.0.0.1:1234/ que estava tentando se conectar ao http://127.0.0.1:1234/api e o mesmo com o Jenkins.

Portanto, a solução está adicionando barras finais à localização e ao proxy_pass.

location /api/ {
    proxy_pass http://127.0.0.1:1234/;
....

location /jenkins/ {
   proxy_pass          http://localhost:8080/;
   proxy_read_timeout  90;

....

Então isso foi o truque.

    
por 11.03.2016 / 16:29