私は、ポート 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
同様に機能します。)