Сообщите 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
)

Помните, применяйте это промежуточное ПО, только если вы находитесь за прокси-сервером, и установите правильное количество прокси-серверов, которые устанавливают каждый заголовок. Это может стать проблемой безопасности, если вы неправильно настроите эту конфигурацию.

Вернуться на верх