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

Nginx теряет порт при перенаправлении

У меня есть сайт Wordpress, работающий в среде разработки Vagrant. Когда я загружаюсь http://localhost:8080, сайт работает нормально, но как только я пытаюсь получить доступ к администратору, перейдя в http://localhost:8080/wp-admin, Я перенаправлен на http://localhost/wp-admin/.

Здесь две вещи:

  1. Nginx заставляет завершающую косую черту (что я не делаю намеренно, черт возьми, но было бы хорошо).
  2. При перенаправлении конечной косой черты порт теряется (что очень плохо).

Я пробовал добавить port_in_redirect директива (если честно, с использованием обоих значений), которую я видел в других ответах на аналогичные вопросы, но она ничего не изменила.

Есть идеи, что мне не хватает?

По умолчанию proxy_redirect при использовании proxy_pass внутри location (адаптировано к вашему варианту использования):

location / {
  proxy_pass     http://localhost:8080/;
  proxy_redirect http://localhost:8080/ /;
}

Поскольку вы используете тот же порт 8080 в Vagrant, он будет соответствовать и удалять порт.

Есть два простых решения, чтобы избежать этого:

  1. Перенаправить на другой порт в бродячей конфигурации, чтобы proxy_redirect не совпадает.
  2. Отключить proxy_redirect с помощью proxy_redirect off;.

(Я знаю, что это было 4 года назад, но у меня была аналогичная проблема при тестировании KeyCloak, поэтому я надеюсь, что этот ответ поможет другим, которые столкнулись с этой проблемой.)

Вам нужно использовать proxy_redirect чтобы изменить заголовок ответа, чтобы localhost был перезаписан на localhost: 8080

Если вы заметили, что Wordpress выполняет перенаправление (в отличие от NGINX, как вы уже проверили), убедитесь, что настройки wordpress внутри базы данных верны.

Это связано с тем, что Wordpress хранит полный URL-адрес веб-сайта в таблице базы данных с именем wp_options

При стандартной установке эти параметры URL-адреса имеют идентификаторы 1 и 2, а значение ключа - siteurl и home. Вы можете использовать такие инструменты, как PhpMyAdmin, для изменения базы данных, чтобы изменить эти значения, чтобы исправить проблемы с перенаправлением.