Не работает добавления заголовков (proxy_headers) в обратном прокси nginx
Есть сервер NGINX со следующей конфигураций:
server {
listen 80;
location /api/v1 {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://app:8000;
}
location /docs {
proxy_pass http://app:8000/docs;
}
location /static/ {
root /www/;
}
}
А также "приложение", написанное на FastAPI python-3.10:
from fastapi import FastAPI, Request
app = FastAPI()
@app.get("/")
async def get_header(request: Request):
return request.headers
Результат запроса является словарь, который выглядит следующим образом:
{
"host": "0.0.0.0:8000",
"connection": "keep-alive",
"accept": "application/json",
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
"referer": "http://0.0.0.0:8000/docs",
"accept-encoding": "gzip, deflate",
"accept-language": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7"
}
Почему итоговый словарь не содержит заголовков, которые должны добавляться при маршрутизации в nginx (X-Forwarded-For, X-Real-IP и т.д)?
Источник: Stack Overflow на русском