Nginx 0.7.43 для проксирования сайта Wordpress на Apache 2.4 + PHP 5.6

Nginx 0.7.43 для проксирования сайта Wordpress на Apache 2.4 + PHP 5.6

Я пытаюсь использовать существующий 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работает аналогично.)

Связанный контент