Flask nginx 代理修复重复 headers
Flask nginx proxy fix duplicates headers
我有一个部署了 nginx 和 gunicorn 的烧瓶服务器。我阅读了 this 并设置了 nginx 来设置这些 headers 并修复了 werkzeug 中间件代理。现在进入 flask 的 headers 有正确的 ip 地址和主机和东西。除了 1 个小问题。 headers 显示为以逗号分隔的重复项。这是我在打印 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
这些 headers 是 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 行。基本上它设置了那些 headers 两次。我必须删除 include proxy_params
行或删除手动 proxy_set_header
行。
我有一个部署了 nginx 和 gunicorn 的烧瓶服务器。我阅读了 this 并设置了 nginx 来设置这些 headers 并修复了 werkzeug 中间件代理。现在进入 flask 的 headers 有正确的 ip 地址和主机和东西。除了 1 个小问题。 headers 显示为以逗号分隔的重复项。这是我在打印 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
这些 headers 是 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 行。基本上它设置了那些 headers 两次。我必须删除 include proxy_params
行或删除手动 proxy_set_header
行。