最新的nginx启用 proxy protocol配置方法

最新的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 指令将其传递给后端服务器。当使用代理服务时,这种方式更为常见。

第二种方式是在 serverlocation 块内开启 Proxy Protocol,表示 Nginx 会在发送请求时插入 Proxy Protocol 头部信息。一般情况下,这种方式不太常用。

无论采用哪种方式,都需要注意以下几点:

  • 确保后端服务器支持 Proxy Protocol,并正确解析头部信息。
  • 如果是多层代理,需要确保每一层都能正确处理和传递 Proxy Protocol 头部信息。
  • 使用 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_forx_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 头部信息了。