Nginx redirecionando o servidor proxy_pass para http: //server/index.html

3

Eu tenho a seguinte configuração:

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

    root /var/www/html;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;

    server_name _;
    location / {
    index index.html;
    }


    server_name command_asdf
    location  /asdf/ {
    proxy_pass http://127.0.0.1:3001/;
    }

Quando vou ao link , tudo funciona bem.

No entanto, se eu for para http: // server / asdf / ou http: // server / asdf, ambos me redirecionam para http: //server/index.html em vez de http: // server / asdf / index.html

Passei horas tentando descobrir como redirecioná-lo para a página de índice no subdiretório, mas infelizmente não tive sucesso.

Eu tenho um número de servidores que eu preciso usar proxy_pass, no entanto acima é a configuração mais simples que eu posso mostrar.

Obrigado!

    
por Matt 12.09.2017 / 06:00

1 resposta

2

Semanas depois ... Consegui resolver o meu problema. A solução é:

   proxy_redirect    / $request_uri;

Assim, quando um usuário acessa foo.com/bar/ ele redireciona para foo.com/index.html

Isso estava acontecendo no redirecionamento 302 que o servidor proxy_pass estava emitindo.

A linha acima adicionada à minha configuração redirecionará foo.com/bar/ corretamente para o link que carrega a página index.html .

Configuração completa:

    server_name bar;
    location  /bar/ {
    proxy_pass http://127.0.0.1:3001/;
    proxy_redirect    / $request_uri;
    }

Para referência, $ request_uri é igual ao local e subdiretório, por exemplo, foo.com/bar /

    
por 16.10.2017 / 01:19

Tags