最新的nginx启用 proxy protocol配置 server { listen 80 proxy_protocol; ... } 还是 server { listen 80; proxy_protocol on; ... }
这两种配置方式都可以启用 Proxy Protocol。
第一种方式是在 listen
指令中开启 Proxy Protocol,表示 Nginx 会在接收到 TCP 连接时从对端读取 Proxy Protocol 头部信息,可以通过 proxy_set_header
指令将其传递给后端服务器。当使用代理服务时,这种方式更为常见。
第二种方式是在 server
或 location
块内开启 Proxy Protocol,表示 Nginx 会在发送请求时插入 Proxy Protocol 头部信息。一般情况下,这种方式不太常用。
无论采用哪种方式,都需要注意以下几点:
我的后端是flask ,怎么确保后端服务器支持 Proxy Protocol
要确保后端服务器支持 Proxy Protocol,需要在后端应用程序中进行设置。对于 Flask 应用程序,你可以通过使用 werkzeug.contrib.fixers.ProxyFix
中间件来启用 Proxy Protocol。
具体来说,在 Flask 应用程序中加入以下代码即可启用 Proxy Protocol:
from werkzeug.contrib.fixers import ProxyFix
app = Flask(__name__)
app.wsgi_app = ProxyFix(app.wsgi_app, x_for=1, x_proto=1)
其中,x_for
和 x_proto
分别表示解析 Proxy Protocol 头部时使用的地址类型和协议类型,一般情况下不需要修改。
注意,如果你的 Flask 应用程序运行在 WSGI 容器中(比如 uWSGI 或 gunicorn),则还需要在容器配置中添加相应的选项来启用 Proxy Protocol。以 uWSGI 为例,在 uWSGI 配置文件中加入以下代码即可启用 Proxy Protocol:
uwsgi_param PROXY_PROTOCOL $proxy_protocol_addr;
uwsgi_pass_request_headers on;
这样配置完成后,Flask 应用程序就能够正确地解析 Proxy Protocol 头部信息了。