LNShadow
@LNShadow
Crazy DevOps Engineer

Создаёт ли nginx отдельное tcp соединение на internal location?

Доброго времени суток.

Как это работает:
1) Пользователь обращается к серверу 1 на server_name1/location1
2) В нем proxy_pass на upstream, сервер 2 из которого отдает 302 редирект на другой server_name2/location2 сервера 1
3) Мы его ловим (error_page 301 302 = @redirect;) и отдаем контент по ссылке полученной в шаге 2

Для пользователя всё прозрачно, url не меняется.
В данном случае nginx создает http запрос сам на себя на шаге 3: server_name1/location1 -> server_name2/location2

Суть вопроса:
Как nginx обращается к internal location? С созданием дополнительного tcp коннекта на самого себя или через внутренние механизмы?

Хотелось бы сделать в server_name1/location1 subrequest на сторонний сервер 2, получить ссылку и сразу же сделать на неё proxy_pass
  • Вопрос задан
  • 319 просмотров
Решения вопроса 1
LNShadow
@LNShadow Автор вопроса
Crazy DevOps Engineer
Всем спасибо, все решилось rewrite ом на lua и перенос server_name2/location2 в server_name1/@redirect
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@polozad
Обращается не nginx, обращается клиент, которому отдали 302. По логам посмотрите, там можно включить трейс редиректов.
Ответ написан
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
Нихера не понятно, сами терминов напридумывали. Дайте конфиг.
Если nginx видит rewrite (redirect) то он просто снова начинает матчить location из вашего конфига но уже для нового url.
nginx.org/en/docs/http/ngx_http_rewrite_module.htm...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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