Ошибка 404 при попытке доступа к странице Wordpress, которая существует за Apache Proxy, где работают все остальные страницы - PullRequest
0 голосов
/ 21 ноября 2018

Все -

Вот сценарий, на который я смотрю.У меня есть сайт, www.mycompany.com, это наше приложение.Это веб-программа, в которую пользователи входят, и она отлично работает.У нас есть маркетинговый сайт в Wordpress на about.mycompany.com.Сайт сам по себе работает нормально.

Руководство указало мне, что сайт Wordpress должен быть отдельным, а не отдельным сайтом, являющимся «подкаталогом» нашего текущего сайта.Итак, я нахожусь в процессе настройки серверов для совместной работы, так что когда вы перейдете на www.mycompany, com / about, он покажет наш сайт Wordpress.

Вот информация о конфигурации для каждого из серверов:

www.mycompany.com.conf файл:

<VirtualHost *:80>
    Redirect / https://www.mycompany.com
    ServerName www.mycompany.com
    DirectoryIndex index.php index.html
    DocumentRoot /var/sites/prod1
    ServerAdmin myaddress@mycompany.com
    ServerAlias mycompany.com

    <Directory />
        AllowOverride all
        Require all granted
    </Directory>

</VirtualHost>

<VirtualHost *:443>
    ServerName www.mycompany.com
    DirectoryIndex index.php index.html
    DocumentRoot /var/sites/prod1
    ServerAdmin myaddress@mycompany.com
    ServerAlias mycompany.com

    <Directory />
        AllowOverride all
        Require all granted
    </Directory>

    ProxyPreserveHost On
    ProxyRequests Off

    SSLProxyEngine on
    SSLProxyVerify none
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerName off
    SSLProxyCheckPeerExpire off

    ProxyTimeout 2400
    ProxyBadHeader Ignore

    ProxyPass /about https://about.mycompany.com
    ProxyPassReverse /about https://about.mycompany.com

    SSLEngine on
    SSLCertificateKeyFile /var/keys/www.mycompany.com.key
    SSLCertificateFile /var/keys/www.mycompany.com.crt

</VirtualHost>

about.mycompany.com.conf файл:

 <VirtualHost *:80>
    Redirect / https://about.mycompany.com/
    ServerName about.mycompany.com
    DirectoryIndex index.php index.html
    DocumentRoot /var/sites/about
    ServerAdmin myaddress@mycompany.com

    <Directory />
        AllowOverride all
        Require all granted
    </Directory>

</VirtualHost>

<VirtualHost *:443>
    ServerName about.mycompany.com
    DirectoryIndex index.php index.html
    DocumentRoot /var/sites/about
    ServerAdmin myaddress@mycompany.com

    <Directory />
        AllowOverride all
        Require all granted
    </Directory>

    ProxyPreserveHost On
    ProxyRequests Off

    SSLProxyEngine on
    SSLProxyVerify none
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerName off
    SSLProxyCheckPeerExpire off

    ProxyTimeout 2400
    ProxyBadHeader Ignore

    ProxyPass /about https://about.mycompany.com
    ProxyPassReverse /about https://about.mycompany.com

    SSLEngine on
    SSLCertificateKeyFile /var/keys/about.mycompany.com.key
    SSLCertificateFile /var/keys/about.mycompany.com.crt

</VirtualHost>

Я также создал файл 'cors-access.conf' , чтобы домены могли общаться друг с другом:

Header set Access-Control-Allow-Origin "*"

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

В случае, если это имеет значение: - Я использую самозаверяющие сертификаты для этого тестирования.Я не получаю никаких ошибок, связанных с безопасностью, но упоминаю это на всякий случай.- Я использую Apache 2.4.6-80 на CentOS 7.5 (1804).- Эти машины НЕ открыты для интернета, когда я над ними работаю.У них (включая мой клиент) есть IP-адреса, введенные в соответствующие файлы хостов для разрешения, чтобы мое тестирование содержало в себе.

Я настроил Wordpress следующим образом:
Адрес WordPress (URL) - https://about.mycompany.com
Адрес сайта (URL) - https://www.mycompany.com/about
Постоянные ссылки установлены для "Название сообщения"

Почти все мои страницы работают нормально с доступом, кроме одной: https://www.mycompany.com/about/about-us/ Эта мне даетошибка 404.

Я посмотрел в Wordpress, и страница есть, поэтому не все так просто.Я также сбросил и включил мои постоянные ссылки в случае, если это исправит их, и в этом нет никакой разницы.

Что я ДЕЙСТВИТЕЛЬНО подозреваю (и я не уверен, что я делаю Proxy / ReverseProxyнеправильно или что-то еще) в том, что существует «конфликт» между «/ about» ProxyPass / ProxyPassReverse и «about» в «about-us».Вот мое объяснение, почему я подозреваю, что проблема здесь:

  • Когда я изменяю Постоянную ссылку страницы about-us на что-либо, что не начинается со строки about (например, us-about)'или' ab0ut-us '), я могу заставить страницу работать.
  • Я также уверен, что не только эта страница ведет себя странно.Я подумал, что где-то за кулисами на странице может быть что-то, чего я не знаю о том, как вызвать проблему, поэтому я создал несколько совершенно новых страниц под названием «О тесте» (которые создали постоянную ссылку «о тесте»)и «Около 2» (постоянная ссылка «около-2»), и эти страницы также выдавали 404 ошибки.

Я предполагаю, что где-то мне нужно поместить какой-нибудь RewriteCond или RewriteRuleтак что «о» не обрабатывается дважды (или что-то еще происходит), но я не уверен.

Если требуется какая-либо дополнительная информация / разъяснения, пожалуйста, спросите в противном случае любое направление или предложения будутс благодарностью !!

Спасибо,
Чарльз

Редактировать -

Моя репутация слишком низкая, чтобы отвечать прямо на ваш комментарий,Орландо П., вот мой тебе ответ.

Вы задаете очень хороший вопрос, и я с удовольствием уточняю / расширяю.То, что в конечном итоге произойдет в будущем, - это то, что наш сервер www.mycompany.com будет находиться за балансировщиком нагрузки, работающим с несколькими серверами.Вместо того, чтобы запускать WordPress на том же компьютере, что и эти серверы (сохраняя необходимость поддерживать обратный отсчет файлов), я хотел разгрузить WordPress на отдельный сервер, поскольку ему не требуется почти столько вычислительной мощности, сколько будет на серверах приложений..

Другое ограничение, которое я навязал мне своей исполнительной командой, заключается в том, что они не хотят, чтобы наш маркетинговый сайт был на «about.mycompany.com», но они хотят разрешить использование «www.mycompany.com/about 'будет использоваться.Поэтому моя идея заключалась в том, чтобы настроить «about.mycompany.com» на отдельном сервере, а затем использовать перенаправление прокси на другой сервер.

У вас есть предложение / место, где вы можете указать мне, где я могу использовать другой метод вместо прокси, где я могу делать то, что я иду?Я изучаю директиву «Расположение» в Apache, чтобы посмотреть, смогу ли я использовать ее для достижения той же цели, но если у вас есть какие-либо предложения, выкиньте их там.Спасибо !!

...