WP за обратным прокси nginx, главная страница застряла в цикле перенаправлений

Вопрос или проблема

У меня главная страница застряла в цикле 301 редиректов.

У меня есть два сервера. ServerA и ServerB.
serverA:
domain-a.com
использует обратный прокси nginx
ServerB:
domain-b.com
использует nginx

domain-a.com проксирует domain-b.com

Симптомы

  • Сайт настроен на отображение статической страницы. Если я меняю ее на отображение самых последних постов, они отображаются правильно.

  • Не имеет значения, какую статическую страницу я установил в качестве главной, ни одна из них не отображается корректно как главная страница.

  • Статические страницы отображаются вполне нормально, когда я просматриваю их напрямую (например, https://domain-a.com/home-page/)

  • Не имеет значения, какая тема активна, главная страница ведет себя одинаково.

Что я пробовал

  • Регенация постоянных ссылок

  • Отключение всех плагинов

Я использую domain-a.com для доступа к сайту WordPress. Если я меняю WP на отображение самых последних постов, они отображаются правильно.

Если я меняю постоянные ссылки на “Простые”, https://www.domain-a.com/?p=123, то главная страница работает хорошо, но мне нужен URL типа “название поста”.

Конфигурация обратного прокси nginx:

# ServerA Nginx
#PROXY-START/

location ^~ /
{
    proxy_pass https://domain-b.com;
    proxy_set_header Host domain-b.com;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_http_version 1.1;
    # proxy_hide_header Upgrade;
    port_in_redirect off;
    
    add_header X-Cache $upstream_cache_status;
    #Установить кеш Nginx


    if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
    {
        expires 1m;
    }
    proxy_ignore_headers Set-Cookie Cache-Control expires;
    proxy_cache cache_one;
    proxy_cache_key $host$uri$is_args$args;
    proxy_cache_valid 200 304 301 302 1m;
}

    location @handle_redirects {
        set $saved_redirect_location '$upstream_http_location';
        proxy_pass $saved_redirect_location;
    }
#PROXY-END/
//ServerB, wp-config.php

define('WP_HOME','https://domain-a.com');
define('WP_SITEURL','https://domain-a.com');

Ответ или решение

Решение проблемы: зацикливание перенаправлений на главной странице WordPress за Nginx обратным прокси

Введение

Ваша проблема с зацикливанием перенаправлений на главной странице WordPress за Nginx обратным прокси — это распространённая и сложная задача, которая может возникнуть из-за неправильной настройки как на уровне веб-сервера (ServerA), так и на уровне WordPress (ServerB). Давайте рассмотрим возможные причины возникновения данной проблемы и пути её решения.

Анализ проблемы

Симптомы:

  • Главная страница застревает в цикле перенаправлений (например, 301 редиректы).
  • Стационарные страницы корректно отображаются только при прямом доступе (например, https://domain-a.com/home-page/).
  • При выборе отображения последних записей на главной странице они показываются корректно.
  • Изменение плагинной структуры и генерация постоянных ссылок не решает проблему, за исключением использования "Plain".

Конфигурация серверов

Согласно предоставленной информации, у вас есть два сервера:

  • ServerA: Nginx как обратный прокси для ServerB
  • ServerB: WordPress установлен на Nginx и обслуживает сайт domain-b.com, проксируемый на domain-a.com.

Возможные причины проблемы

  1. Неправильные настройки прокси:

    • Конфигурация Nginx на ServerA может неправильно интерпретировать запросы к WordPress на ServerB, что приводит к бесконечным перенаправлениям.
  2. Настройки WordPress:

    • Константы WP_HOME и WP_SITEURL в wp-config.php настроены на https://domain-a.com, что может вводить в заблуждение WordPress относительно того, откуда он работает. Это может быть проблемой при использовании обратного прокси.
  3. Перегруженные правила перенаправления:

    • В конфигурации Nginx могут отсутствовать правила для обработки перенаправлений, что приводит к зацикливанию при попытке доступа к статической домашней странице.

Рекомендации по решению проблемы

1. Обновление конфигурации Nginx на ServerA

Попробуйте скорректировать конфигурацию Nginx следующим образом:

location / {
    proxy_pass https://domain-b.com;
    proxy_set_header Host $host; # Модификация для центрирования на запрашиваемом домене.
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    port_in_redirect off; # Чтобы предотвратить любые конфликты с перенаправлениями
}

location @handle_redirects {
    set $saved_redirect_location '$upstream_http_location';
    proxy_pass $saved_redirect_location;
}

# Дополнительные параметры кеширования можно оставить по вашему усмотрению.

2. Проверка конфигурации на ServerB

Убедитесь, что в файле wp-config.php установлены правильные URL. Практика обычно предполагает указание поддомена или детализированного домена, если это необходимо:

define('WP_HOME','https://domain-b.com'); # Измените на домен ServerB
define('WP_SITEURL','https://domain-b.com'); # Измените на домен ServerB

3. Проверка перенаправлений

Используйте инструменты, такие как curl или расширения для браузера, чтобы проверить http-заголовки и перенаправления, когда вы обращаетесь к главной странице. Это поможет выявить непреднамеренные 301 перенаправления.

4. Очистка кэша

Если у вас включено кеширование на одном из двух серверов, попробуйте очистить кэш. Кэшированные перенаправления могут причинять проблемы даже после изменений в конфигурации.

5. Рассмотрение других причин

  • Убедитесь, что на ServerB в WordPress нет дополнительных конфигураций или плагинов, которые могут вызывать перенаправления.
  • Также проверьте конфигурацию SSL, если SSL настроен неправильно, это может привести к нежелательным перенаправлениям.

Заключение

Проблема зацикливания перенаправлений в WordPress за Nginx обратным прокси может возникнуть из-за нескольких факторов, включая неправильные настройки проксирования и конфигурирования WordPress. Исполнение вышеуказанных рекомендаций должно помочь в диагностике и устранении проблемы.

Если проблема сохраняется, стоит также рассмотреть возможность использования инструментов для мониторинга и отладки, таких как nginx logs и error logs, которые могут предложить дополнительную информацию о том, что происходит на уровне сервера.

Оцените материал
Добавить комментарий

Капча загружается...