1 votes

Nginx en tant que proxy pour tornado: 301 redirection

J'ai nginx qui fonctionne en tant que 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 tient pas compte du port 8080. Je suis redirigé vers le port 80, où rien n'écoute.

Voici ma configuration de 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. Comme le serveur backend se redirige vers le port 80, une partie du problème vient de là. Testez directement tornado sur le port 5000, est-ce que les redirections fonctionnent ? Je suppose que non. Trouvez comment ajuster soit tornado soit Flask pour inclure le bon port dans la redirection.

Même si vous ne le faites pas, nginx peut gérer cela avec des 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