Задать вопрос
@alenov
Программист

Почему прямая ссылка на сайт работает, а при проксировании через proxy_pass — нет?

Есть сайт api.site.ru.
Хочу настроить проксирование в nginx, с сайта site.ru на api.site.ru. Пишу в конфиге:
server {
  server_name site.ru;
...
  location /api/ {
    proxy_pass http://api.site.ru;
  }
...
}


Даю прямой запрос api.site.ru/api/request, получаю код 200, всё в порядке.
Даю запрос site.ru/api/request, получаю 502. В логах nginx:
upstream prematurely closed connection while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: site.ru, request: "GET /api/request HTTP/1.1", upstream: "http://yyy.yyy.yyy.yyy:80/api/request", host: "site.ru"

Что происходит?
Что значит upstream: "http://yyy.yyy.yyy.yyy:80/api/request", host: "site.ru"? Это значит, что nginx перенаправляет запрос на хост site.ru, т.е. на себя?
  • Вопрос задан
  • 122 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
@alenov Автор вопроса
Программист
Разобрался. Нужно было явно установить заголовок Host:
proxy_set_header Host api.site.ru
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы