首页 > 解决方案 > 烧瓶重定向在 Nginx 代理上搞砸了

问题描述

开发轻而易举,但投入生产目前是一场噩梦。我所有使用 Flask 的重定向都搞砸了, url_for() 可以在模板上使用,但是每当我必须重定向它失败时,这里就是 nginx 配置

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

    server_name 162.240.32.123 planosinformatica.com.br www.planosinformatica.com.br;
    location /static {
        alias /opt/siteplanos/siteplanos/static;    
    }

    location / {
        include /etc/nginx/proxy_params;
        
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        #proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $remote_addr;
        proxy_pass http://localhost:8000;
    }



    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/planosinformatica.com.br/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/planosinformatica.com.br/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot


}

例如重定向是

return redirect(url_for('main.home')) 

路由装饰器是 /home

如果我有这样的 ProxyFix

app.wsgi_app = ProxyFix(app.wsgi_app,x_for=1,x_host=1)

如果我有这样的情况,它将重定向到客户端 IP 地址

app.wsgi_app = ProxyFix(app.wsgi_app)

它将重定向到

https://www.planosinformatica.com.br,www.planosinformatica.com.br/home

标签: nginxflaskproxygunicorn

解决方案


推荐阅读