Configurando o redirecionamento nginx da raiz

Configurando o redirecionamento nginx da raiz

Estou tentando configurar o nginx, mas não consigo fazê-lo funcionar, apesar das minhas múltiplas tentativas. O que eu preciso é:

  • porta 80, /downloadé servida pelo nginx
  • porta 80, qualquer outra coisa é redirecionada para a mesma máquina, porta 8080

Isso funciona bem, mas agora preciso disso apenas no caso do root (http://meuhost/) o cliente é redirecionado para o aplicativo padrão em /Games. Minha configuração atual está errada e me redireciona em um loop infinito. Tirei algumas ideias deaquimas não consegui fazer funcionar. Exemplos de redirecionamentos:

ex1: http://myhost/  --> http://myhost/Games --> http://localhost:8080/Games
ex2: http://myhost/Books --> http://localhost:8080/Books

eu tentei

        location / {
            proxy_pass  http://localhost:8080/Games;
        }

Mas isso parece afetar tudo (ex:/Livros,/XYZ, ...). Acho que um redirecionamento quando a raiz exata é especificada é o mais limpo.

Além disso, preciso replicar isso no HTTPS. Suponho que isso também funcionará no elemento "stream".


nginx.conf:

http {
    server {
        listen  80;
        root /home/www/;
        location = / {
            return 301 http://$host/Games;
        }
        location / {
            proxy_pass  http://localhost:8080;
        }
        location /download/ {
            ....
        }
    }
}

stream {
    server {
        listen  443;
        ...
    }   
} 

Responder1

Qual é exatamente a questão aqui? Sua configuração funciona para mim:

server {
    listen 80;
    listen [::]:80;

    server_name 192.168.0.2;
    root /var/www;

    location = / {
        return 301 http://$host/folder;
    }

    location / {
        proxy_pass http://otherserver:80;
    }
}

Histórico:

[22/Feb/2018:17:04:55 +0100] "GET / HTTP/1.1" 301
[22/Feb/2018:17:04:55 +0100] "GET /folder HTTP/1.1" 301
[22/Feb/2018:17:04:55 +0100] "GET /folder/ HTTP/1.1" 200
[22/Feb/2018:17:11:29 +0100] "GET /index.html HTTP/1.0" 200

O que você vê em seus registros? As solicitações não conseguem ser proxy ou o host local causa o problema? Como é a configuração do seu host local? Há muito pouca informação para poder ajudá-lo.

Além disso, preciso replicar isso no HTTPS. Suponho que isso também funcionará no elemento "stream".

Não tenho certeza do que você quer dizer, mas você pode simplesmente adicionar outro serverblock com a mesma configuração em listen 443vez de listen 80e adicionar as diretivas SSL.

informação relacionada