Nginx 0.7.43 將 WordPress 網站代理程式傳遞到 Apache 2.4 + PHP 5.6

Nginx 0.7.43 將 WordPress 網站代理程式傳遞到 Apache 2.4 + PHP 5.6

我正在嘗試使用在連接埠 80 上運行的現有 nginx,透過代理傳遞到為 WordPress 網站提供服務的 Apache。

新增了 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 程式碼。

Firefox:瀏覽 WordPress 網站會導致重定向到 127.0.0.1 ...

Safari:有效!被展示...

奇怪的是,如果我瀏覽所有瀏覽器http://media.example.net/wp-admin並執行登入..我可以進入儀表板,一切都顯示得完美!

所有圖像都在那裡,PHP 程式碼被執行......但只有在登入儀表板之後!

我在這裡缺少什麼?

我沒有在 Apache 中建立任何 VirtualHost,它是一個簡單的 Apache 2.4 伺服器,Wordpress 網站位於預設的 DocumentRoot 內。

我無法遷移到較新的 nginx 版本,因為它正在運行生產網站。

當 Plumi 在 Debian 8 上正式發布 4.5.2 時,遷移已經計劃好了。

是否有任何首選/工作配置可以正確地將所有 Wordpress 內容代理傳遞到我的 Apache,而無需將其重定向到例如 127.0.0.1,並在 Apache 上正確執行 PHP 程式碼?

謝謝 !

答案1

您可能想要設定(並使用)其他標頭來代理 Apache 實例,例如:

proxy_set_header    X-Real-IP         $remote_addr;
proxy_set_header    X-Forwarded-For   $proxy_add_x_forwarded_for;

大多數後端(包括 Apache 和 PHP)將與其中的一個或多個一起工作$Host(因此它知道正在請求哪個網站)。

應該然後允許 Apache 的 PHP 識別附加資料並實質上說「哦,這不是源自本地主機,它的實際起源是來自$remote_addr」。 ($remote_addr是變量,表示真實來源的真實IP位址,作用X-Forwarded-For類似。)

相關內容