nginx como proxy para tornado: redirecionamento 301

1

Eu tenho nginx trabalhando como frontend to tornado (que está executando um aplicativo baseado no framework Flask). O Nginx está sendo executado na porta 8080. No entanto, quando Flask gera um "redirecionamento 301", não leva em conta a porta 8080. Eu recebo um redirecionamento para a porta 80, onde não tenho nada escutando.

Esta é a minha configuração nginx para o site:

server {
    listen 8080;
    server_name localhost;

    location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ {
        expires off;
    }
    location / {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Port 8080;
        proxy_pass http://127.0.0.1:5000;
    }
}

Existe uma maneira de corrigir o problema?

    
por facha 25.07.2011 / 13:03

1 resposta

3

proxy_redirect é a diretiva que você está procurando. Como o servidor backend está redirecionando para a porta 80, parte do problema está lá. Teste o tornado diretamente na porta 5000, os redirecionamentos funcionam? Meu palpite seria não. Descubra como ajustar o tornado ou o Flask para incluir a porta adequada no redirecionamento.

Mesmo que você não faça isso, o nginx pode manipulá-lo com proxy_redirect (s).

proxy_redirect default;
proxy_redirect http://127.0.0.1:80/ /;
    
por 25.07.2011 / 16:59

Tags