У меня проблема с переадресацией 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 также обслуживает запрос.
Попробуй добавить absolute_redirect off
в блок вашего местоположения
location = /url1 {
absolute_redirect off;
return 301 /url2;
}