CentOS 7 サーバー上の Apache のリバース プロキシとして Nginx を作成しようとしています。
これまで私がやってきたことは次のとおりです。
Nginx の設定ファイルを作成します。ナノ /etc/nginx/conf.d/default.conf
server {
listen 80;
root /usr/share/nginx/html/;
index index.php index.html index.htm;
server_name _;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}
location ~ /\.ht {
deny all;
}
}
2行目を変更conf は、httpd.conf ファイルに記述されています。:
Listen 127.0.0.1:8080
DocumentRoot "/usr/share/nginx/html/"
/usr/share/nginx/htmlにinfo.phpというファイルを作成し、<?php infophp();?>
そこに配置しましたが、ページを読み込もうとするとhttp://My_Ip/info.phpファイルをダウンロードするためのポップアップが表示されますが、ファイルを実行したいのです。
私はこのコマンドを渡しましたhttpd -M | grepphp を実行して、Apache Web サーバーに Php モジュールが存在するかどうかを確認したところ、「php7_module (shared)」と表示されたので、存在すると思われます。
どのような助けでもいただければ幸いです。ありがとうございます。
ヘンリー
追伸:私が行くときhttp://私のIPデフォルトのNginxホームページが表示されます。追記2: 質問者のために、私はすでにserverfaultに関連する問題について投稿しました(エラー403)が、どうやら問題はもうないようです(つまり、http://My_IP/任意のcssファイル.cssたとえば、エラーもなく、きちんと表示されます)
答え1
PHPスクリプトを実行するには、サーバー上でPHP FPMのインスタンスが動作している必要があります。以下を実行して確認できます。
find / -type d -iname *fpm*
結果が返された場合は、すでにインストールされています。次に、リッスンしているポート/ソケットを確認するには、次のコマンドを実行します。
find / -type d -iname *fpm* | xargs grep -r "^listen[= ]"
次のような結果が返されるはずです:
/etc/php/7.2/fpm/pool.d/www.conf:listen = /run/php/php7.2-fpm.sock
Nginxの設定ディレクトリ(通常は/etc/nginx/
)にすでにファイルがあるかもしれませんfastcgi_params
が、ない場合は作成して例をコピーしてください。ここ
次に、php のロケーション ブロックを変更して設定ファイルを含め、前のコマンドから返されたポート/ソケットを使用してリクエストを php fpm に渡します。
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
include fastcgi_params;
}
ここで Nginx を再起動すると動作するはずです。