Я пытаюсь использовать существующий nginx, работающий на порту 80, для прокси-передачи к Apache, обслуживающему веб-сайт Wordpress.
Добавлен раздел nginx (некоторые закомментированные тесты оставлены намеренно, я перепробовал много версий, извините, если что-то не так):
upstream wordpress {
server 127.0.0.1:5000;
}
server {
server_name media.raw-news.net;
access_log /home/plumi/PLUMI/plumi.app/var/log/wordpress-access.log;
error_log /home/plumi/PLUMI/plumi.app/var/log/wordpress-error.log;
#root /usr/local/apache2/htdocs/;
location / {
proxy_redirect off;
proxy_pass http://wordpress;
proxy_connect_timeout 75;
proxy_read_timeout 185;
}
location ~ .*\\.(php)$ {
proxy_pass http://wordpress;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
Мой Apache работает на порту 5000 с включенным PHP (только соответствующие функции PHP):
LoadModule php5_module modules/libphp5.so
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
AddType text/html .php
AddHandler php5-script .php
Эффект на данный момент таков:
Chrome: веб-сайт Wordpress отображается, но, похоже, код PHP не выполняется. Я вижу только часть HTML.
Firefox: просмотр сайта Wordpress приводит к перенаправлению на 127.0.0.1 ...
Safari: It Works! отображается...
Странно, во всех браузерах, если я просматриваюhttp://media.example.net/wp-adminи выполнить вход в систему. Я могу войти в панель управления, и все отображается отлично!
Все изображения на месте, PHP-код выполняется... но только после входа в панель управления!
Что я здесь упускаю?
Я не создавал никаких VirtualHost в Apache, это простой сервер Apache 2.4 с сайтом Wordpress внутри DocumentRoot по умолчанию.
Я не могу перейти на более новую версию nginx, так как на ней запущен производственный сайт.
Миграция уже запланирована, когда Plumi официально выпустит версию 4.5.2 на Debian 8.
Существует ли какая-либо предпочтительная/рабочая конфигурация для правильной проксировки всего контента Wordpress на мой Apache без необходимости перенаправления на 127.0.0.1, например, и правильного выполнения PHP-кода на Apache?
Спасибо !
решение1
Возможно, вы захотите установить (и использовать) дополнительные заголовки для проксирования к экземпляру Apache, например:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Большинство бэкэндов (включая Apache и PHP) будут работать с одним или несколькими из них $Host
(чтобы знать, какой сайт запрашивается).
Этотдолжензатем позвольте PHP Apache распознать дополнительные данные и по сути сказать: «О, это НЕ исходит из localhost, его фактический источник — из $remote_addr
». ( $remote_addr
— это переменная, которая указывает реальный IP-адрес реального источника, и X-Forwarded-For
работает аналогично.)