Назад | Перейти на главную страницу

перенаправление 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 также обслуживает запрос.

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

location = /url1 {
  absolute_redirect off;
  return 301 /url2;
}