问题描述
我有一个装有Nginx和Gunicorn的Flask服务器。我阅读了this,并设置了nginx来设置这些标头,并修复了werkzeug中间件代理。现在,flask中的标头具有正确的ip地址以及主机和内容。除了1个小问题。标头显示为重复,并以逗号分隔。这是我在打印request.headers
时看到的内容。
Host: site.com,site.com
X-Real-Ip: 12.345.67.898,12.345.67.898
X-Forwarded-For: 12.345.67.898,12.345.67.898
X-Forwarded-Proto: https,https
这些标头是nginx覆盖的标头。为什么它们都重复。它们重复并用逗号分开。如何解决此问题? 我已经在示例中完成了nginx配置和werkzeug中间件代理修复。 这或多或少是我的nginx配置。
server {
# dont worry about ssl,certbot handles that
listen 80 default_server;
listen [::]:80 default_server;
server_name site.com www.site.com;
location / {
include proxy_params;
proxy_pass http://unix:/path/to/site.sock;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
解决方法
Richard Smith解决了这个问题。那就是include proxy_params;
行。我cat /etc/nginc/proxy_params
,它包含已经包含的确切proxy_set_header行。基本上,它将那些标题设置两次。我必须删除include proxy_params
行或删除手动proxy_set_header
行。