1 votes

nginx comme proxy vers tornado : 301 redirect

J'ai nginx qui fonctionne comme un frontal pour tornado (qui exécute une application basée sur le framework Flask). Nginx fonctionne sur le port 8080. Cependant, lorsque Flask génère une "redirection 301", il ne prend pas en compte le port 8080. Je reçois une redirection vers le port 80, où je n'ai rien à écouter.

Voici ma configuration nginx pour le 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;
    }
}

Y a-t-il un moyen de corriger le problème ?

3voto

h0tw1r3 Points 2706

proxy_redirect est la directive que vous recherchez. Puisque le serveur backend redirige vers le port 80, une partie du problème est là. Testez tornado directement sur le port 5000, est-ce que les redirections fonctionnent ? Je pense que non. Trouvez comment modifier soit tornado soit Flask pour inclure le bon port dans la redirection.

Même si vous ne le faites pas, nginx peut s'en charger avec les proxy_redirect(s).

proxy_redirect default;
proxy_redirect http://127.0.0.1:80/ /;

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X