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

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: это работает! отображается ...

Как ни странно, во всех браузерах, если я просматриваю http://media.example.net/wp-admin и выполнить вход .. Я могу войти в Личный кабинет, и все отображается отлично!

Все изображения есть, код PHP запускается ... но только после входа в Dashboard!

Что мне здесь не хватает?

Я не создавал VirtualHost в Apache, это простой сервер Apache 2.4 с сайтом Wordpress внутри DocumentRoot по умолчанию.

Я не могу перейти на более новую версию nginx, потому что на нем запущен рабочий веб-сайт.

Миграция уже запланирована, когда Plumi официально выпустит 4.5.2 на Debian 8.

Есть ли какая-либо предпочтительная / рабочая конфигурация для правильной передачи всего содержимого Wordpress на мой Apache без перенаправления, например, на 127.0.0.1 и правильного выполнения кода PHP на Apache?

Спасибо !

Вы можете установить (и использовать) дополнительные заголовки для проксирования экземпляра 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 распознавать дополнительные данные и по существу сказать: «О, это НЕ исходило из локального хоста, это фактическое происхождение из $remote_addr". ($remote_addr - это переменная, указывающая реальный IP-адрес реального источника, а X-Forwarded-For работает аналогично.)