Содержание
- Что такое proxy_set_header в Nginx?
- Базовый синтаксис и пример использования
- Типовые сценарии использования proxy_set_header
- 1. Передача оригинального домена
- 2. Передача IP-адреса клиента
- Лучшие практики настройки
- FAQ: Частые вопросы
- Чем отличается proxy_set_header от add_header?
- Можно ли удалить существующий заголовок?
- Как проверить работоспособность настроек?
Что такое proxy_set_header в Nginx?
Директива proxy_set_header
в Nginx позволяет изменять или добавлять HTTP-заголовки при проксировании запросов к backend-серверам. Она используется в server
или location
блоках для тонкой настройки взаимодействия с проксируемыми сервисами.
Базовый синтаксис и пример использования
location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }
Типовые сценарии использования proxy_set_header
1. Передача оригинального домена
- Сохраняет исходный Host-заголовок
- Необходим для корректной работы виртуальных хостов
- Пример:
proxy_set_header Host $host;
2. Передача IP-адреса клиента
- X-Real-IP:
$remote_addr
- X-Forwarded-For:
$proxy_add_x_forwarded_for
- Позволяет backend-серверам видеть исходный IP
Лучшие практики настройки
- Всегда переопределяйте заголовок Host
- Используйте переменные Nginx для динамических значений
- Ограничивайте передачу чувствительных заголовков
- Тестируйте изменения через curl -v
FAQ: Частые вопросы
Чем отличается proxy_set_header от add_header?
proxy_set_header
изменяет заголовки для проксируемых запросов, тогда как add_header
добавляет заголовки в ответ клиенту.
Можно ли удалить существующий заголовок?
Да, через proxy_set_header Header-Name "";
с пустым значением.
Как проверить работоспособность настроек?
- Используйте
curl -v
для просмотра заголовков - Проверяйте логи backend-сервера
- Анализируйте через tcpdump или Wireshark