Сообщите Flask, что он находится за прокси-сервером¶
При использовании обратного прокси-сервера или многих платформ хостинга Python, прокси-сервер будет перехватывать и перенаправлять все внешние запросы на локальный сервер WSGI.
С точки зрения сервера WSGI и приложения Flask, запросы теперь поступают с HTTP-сервера на локальный адрес, а не с удаленного адреса на адрес внешнего сервера.
HTTP-серверы должны устанавливать заголовки X-Forwarded-
для передачи реальных значений приложению. Затем приложению можно указать доверять и использовать эти значения, обернув его с помощью промежуточного программного обеспечения X-Forwarded-For Proxy Fix, предоставляемого Werkzeug.
Это промежуточное ПО должно использоваться только в том случае, если приложение действительно находится за прокси-сервером, и должно быть настроено с учетом количества прокси-серверов, расположенных перед ним в цепочке. Не все прокси устанавливают все заголовки. Поскольку входящие заголовки могут быть подделаны, вы должны указать, сколько прокси устанавливают каждый заголовок, чтобы промежуточное ПО знало, чему доверять.
from werkzeug.middleware.proxy_fix import ProxyFix
app.wsgi_app = ProxyFix(
app.wsgi_app, x_for=1, x_proto=1, x_host=1, x_prefix=1
)
Помните, применяйте это промежуточное ПО, только если вы находитесь за прокси-сервером, и установите правильное количество прокси-серверов, которые устанавливают каждый заголовок. Это может стать проблемой безопасности, если вы неправильно настроите эту конфигурацию.