Nano Hash - криптовалюты, майнинг, программирование

Nginx: когда использовать proxy_set_header Host $host vs $proxy_host

Я читал об обратном проксировании и мне интересно, когда proxy_set_header Host $host подходит вместо proxy_set_header Host $proxy_host. Я провел небольшое исследование и в этом article говорится, что в большинстве случаев мы устанавливаем Host в $host. Тогда почему nginx по умолчанию использует $proxy_host? Чтобы помочь мне понять более конкретно, будет ли конфигурация обратного прокси-сервера здесь (нижняя часть статьи) по-прежнему работает, если вместо этого использовать $proxy_host?

Спасибо


Ответы:


1

Как правило, нет необходимости явно выполнять proxy_set_header Host proxy_host, потому что это значение по умолчанию. Если вам нужно вызвать сервер с помощью чего-то другого, кроме того, что указано в директиве proxy_pass, вам нужно переопределить через proxy_set_header something.

Если вы хотите проксировать тот же хост, что и в вашей директиве server_name, то у вас есть возможность использовать proxy_set_header $host. Это обычно имеет место, если, возможно, фактическое приложение размещено на другом порту или на каком-то внутреннем сервере.

server {
    listen 80;
    server_name site.example.com;

    location / {
       proxy_set_header Host $host;
       proxy_pass http://localhost:8080;
    }
}

Если имя, которое вы вызываете восходящему потоку, не является его реальным DNS-именем, тогда у вас может быть что-то вроде:

# 192.168.2.1 responds to site.example.com, but
# site.example.com doesn't actually resolve to 192.168.2.1
proxy_pass http://192.168.2.1;
proxy_set_header Host site.example.com;

Другой случай может быть для виртуального хостинга на основе имени, где есть полезное DNS-имя для восходящего потока, но вы хотели бы назвать его другим именем.

proxy_pass http://origin.example.com;
proxy_set_header Host site.example.com
27.09.2016
  • Имеет ли значение порядок proxy_pass и proxy_set_header? 14.06.2019
  • @iBug Нет! модуль upstream прочитает все настройки, применимые к его внутренним фазам, а затем применит их, когда выдаст фактический proxy_pass. Вы получите точно такое же поведение, если proxy_set_header после proxy_pass в конфигурации. 16.06.2019
  • Мне трудно понять формулировку определений $hostи $proxy_host. Значит, это неправильно: клиент отправляет запрос на сервер nginx A, который прокси-сервер передает его на серверную часть B. Тогда $host будет URL-адресом A, а $proxy_host будет URL-адресом B. Поэтому, если я хочу, чтобы будущие запросы клиента по-прежнему направлялись на A, я бы хотел использовать $host? Это правильно? 01.05.2021
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..