Как остановить автоматическое перенаправление nginx 301, если конечная косая черта отсутствует в URI? (2)

Я столкнулся с аналогичной проблемой, описанной здесь: Как остановить автоматическое перенаправление nginx 301, когда завершающая косая черта отсутствует в URI?

Однако в моем случае конфигурация небольшая немного другое. Я использую значение заголовка Host , чтобы установить «виртуальный домен», который я передаю вышестоящему apache. Таким образом, перенаправление НИКОГДА не должно выполняться nginx - желаемым поведением будет просто передача запроса в исходный apache. Я не могу позволить себе указать значения директивы location , потому что она слишком неэлегантна и громоздка. Есть идеи, как отключить перенаправления nginx , а с помощью proxy_pass ?

Изменить: Интересно, можно ли это сделать с помощью директив proxy_intercept_errors и error_page + некоторого обработчика. Однако неясно, что следует делать в обработчике ... nginx передаст запрос вверх по потоку, если я просто объявлю пустой обработчик? Или я должен снова указать proxy_pass (а также все другие связанные параметры, при условии, что я использую SSL для восходящего соединения)?

Изменить : в конце концов отказался от использования «виртуального домена» и только что указал реальный (как в проза nginx, так и в апаче апстрима); в то же время на вышестоящем сервере apache я ограничил доступ только к определенным IP-адресам. Было бы неплохо понять, как бороться с nginx, но на это просто нет времени. : (

1
задан 20 August 2019 в 21:52
1 ответ

Использовать proxy_redirect

location / user / { proxy_pass http://user.example.com ; proxy_redirect http: // $ proxy_host: 9001 http: // $ host: 80; }

location = / user { proxy_pass http://login.example.com ; proxy_redirect http: // $ proxy_host: 9001 http: // $ host: 80; }

Спасибо,

0
ответ дан 4 December 2019 в 02:46

Теги

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