РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
307 of 307 menu

Параметр proxy_headers

Параметр proxy_headers применяется к команде запуска uvicorn и включает доверие заголовкам, которые добавляет обратный прокси (nginx, Traefik, HAProxy). По умолчанию Uvicorn доверяет таким заголовкам, поэтому значение параметра равно True. Если приложение доступно напрямую из интернета, параметр лучше отключить, чтобы клиент не мог подделать свой IP-адрес и схему запроса.

Когда параметр включён, Uvicorn читает заголовки X-Forwarded-For и X-Forwarded-Proto и подставляет их значения в объект запроса. Тогда request.client.host и request.url.scheme отражают реального клиента, а не прокси.

Синтаксис

uvicorn app:app --proxy-headers uvicorn app:app --no-proxy-headers

Флаг --proxy-headers включает доверие заголовкам, флаг --no-proxy-headers отключает его.

Пример

Давайте создадим приложение, которое возвращает IP-адрес клиента и схему запроса:

from fastapi import FastAPI, Request app = FastAPI() @app.get('/') def index(request: Request): return { 'client': request.client.host, 'scheme': request.url.scheme, }

Запустим сервер с включённым доверием заголовкам прокси:

uvicorn main:app --proxy-headers

Отправим запрос с заголовком X-Forwarded-For:

curl -H 'X-Forwarded-For: 203.0.113.5' http://127.0.0.1:8000/

Результат выполнения кода:

{"client": "203.0.113.5", "scheme": "http"}

Пример

Теперь отключим доверие заголовкам и повторим запрос:

uvicorn main:app --no-proxy-headers

Отправим тот же запрос с заголовком X-Forwarded-For:

curl -H 'X-Forwarded-For: 203.0.113.5' http://127.0.0.1:8000/

Результат выполнения кода:

<+python+> {"client": "127.0.0.1", "scheme": "http"} <-python+>

Как видно, при отключённом параметре заголовок игнорируется, и возвращается реальный адрес клиента.

Смотрите также

  • команда uvicorn,
    которая запускает приложение FastAPI
  • параметр host,
    который задаёт адрес прослушивания сервера
  • параметр port,
    который задаёт порт прослушивания сервера
  • параметр workers,
    который задаёт число рабочих процессов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить