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 Web サイトを提供する 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 は、PHP を有効にしてポート 5000 で実行されています (関連する 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 の Web サイトは表示されますが、PHP コードが実行されていないようです。HTML 部分しか表示されません。

Firefox: Wordpress サイトを閲覧すると 127.0.0.1 でリダイレクトが発生します...

Safari: It Works ! と表示されます...

不思議なことに、すべてのブラウザでブラウズするとhttp://media.example.net/wp-adminログインを実行します。ダッシュボードに入ることができ、すべてが完璧に表示されます。

すべての画像がそこにあり、PHP コードが実行されます...ただし、ダッシュボードにログインした後のみです。

ここで何が欠けているのでしょうか?

Apache で VirtualHost を作成しませんでした。これは、デフォルトの DocumentRoot 内に Wordpress サイトがあるシンプルな Apache 2.4 サーバーです。

本番環境の Web サイトを実行しているため、新しい nginx バージョンに移行できません。

Plumi が Debian 8 で 4.5.2 を公式にリリースするときに、移行はすでに計画されています。

たとえば 127.0.0.1 にリダイレクトすることなく、すべての Wordpress コンテンツを Apache に適切にプロキシパスし、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 が追加データを認識できるようにして、基本的に「これは localhost から発信されたものではなく、実際の発信元は です$remote_addr」と伝えます。($remote_addrは実際のソースの実際の IP アドレスを示す変数であり、 もX-Forwarded-For同様に機能します。)

関連情報