Директива proxy_set_header в server block Nginx: Полное руководство с примерами и FAQ

Что такое 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

Лучшие практики настройки

  1. Всегда переопределяйте заголовок Host
  2. Используйте переменные Nginx для динамических значений
  3. Ограничивайте передачу чувствительных заголовков
  4. Тестируйте изменения через curl -v

FAQ: Частые вопросы

Чем отличается proxy_set_header от add_header?

proxy_set_header изменяет заголовки для проксируемых запросов, тогда как add_header добавляет заголовки в ответ клиенту.

Можно ли удалить существующий заголовок?

Да, через proxy_set_header Header-Name ""; с пустым значением.

Как проверить работоспособность настроек?

  • Используйте curl -v для просмотра заголовков
  • Проверяйте логи backend-сервера
  • Анализируйте через tcpdump или Wireshark
Proxy Ninja
Добавить комментарий