перенаправление nginx без порта

У меня проблема с переадресацией 301 в Nginx. Он всегда перенаправляет на URL-адрес с его локальным портом.

Ситуация следующая: Сайт работает через Cloudflare, полный https. CF отправляет http-запросы на сервер, где varnish их принимает. Затем Varnish передает запрос в nginx, который обрабатывает все остальное вместе с FPM.

Nginx работает на порту 8080. Я создаю перенаправление 301 в Nginx, как обычно:

location = /url1 {
  return 301 /url2;
}

Nginx затем перенаправляет на URL, но добавляет исходное имя хоста и порт, на котором он работает (8080). Поэтому я отключил port_in_redirect в конфигурации сервера. Это работает наполовину. Он перенаправит URL-адрес http на https (без упоминания порта 8080). Он перенаправит URL https на http, но цикл.

Как я могу убедиться, что этого не произойдет? Интересно, можно ли узнать схему, по которой Cloudflare также обслуживает запрос.

2
задан 4 October 2016 в 21:32
1 ответ

Попробуйте добавить absolute_redirect off в свой блок местоположения

location = /url1 {
  absolute_redirect off;
  return 301 /url2;
}
2
ответ дан 3 December 2019 в 11:31

Теги

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