diff --git a/api/configs/feature/__init__.py b/api/configs/feature/__init__.py index ba3542baf3..d791f51c43 100644 --- a/api/configs/feature/__init__.py +++ b/api/configs/feature/__init__.py @@ -315,8 +315,8 @@ class HttpConfig(BaseSettings): ) RESPECT_XFORWARD_HEADERS_ENABLED: bool = Field( - description="Enable or disable the X-Forwarded-For Proxy Fix middleware from Werkzeug" - " to respect X-* headers to redirect clients", + description="Enable handling of X-Forwarded-For, X-Forwarded-Proto, and X-Forwarded-Port headers" + " when the app is behind a single trusted reverse proxy.", default=False, ) diff --git a/api/extensions/ext_proxy_fix.py b/api/extensions/ext_proxy_fix.py index 514e065825..c085aed986 100644 --- a/api/extensions/ext_proxy_fix.py +++ b/api/extensions/ext_proxy_fix.py @@ -6,4 +6,4 @@ def init_app(app: DifyApp): if dify_config.RESPECT_XFORWARD_HEADERS_ENABLED: from werkzeug.middleware.proxy_fix import ProxyFix - app.wsgi_app = ProxyFix(app.wsgi_app) # type: ignore + app.wsgi_app = ProxyFix(app.wsgi_app, x_port=1) # type: ignore diff --git a/docker/nginx/proxy.conf.template b/docker/nginx/proxy.conf.template index 6b52d23512..117f806146 100644 --- a/docker/nginx/proxy.conf.template +++ b/docker/nginx/proxy.conf.template @@ -3,6 +3,7 @@ proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; +proxy_set_header X-Forwarded-Port $server_port; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_buffering off;