解決策 1:
location
式を照合し、それらのルールを作成するために使用されます。
upstream
参照できるサーバーを定義します。
あなたの例では、これは
に相当するものを取得したい場合を意味しますlocation ~ \.php$ {
try_files $uri = 404;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
、必要です
upstream php {
server unix:/run/php-fpm/php-fpm.sock;
}
location ~ \.php$ {
try_files $uri = 404;
fastcgi_pass php;
fastcgi_index index.php;
include fastcgi.conf;
}
アップストリーム ブロックの利点は、複数のサーバー/ポート/サービスをアップストリームとして構成し、トラフィックをそれらに分散できることです。たとえば、次のようになります。
upstream php {
server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
server 192.68.1.2 weight=5;
server unix:/run/php-fpm/php-fpm.sock;
}
この詳細については、nginx のドキュメントを参照してください:
http://nginx.org/en/docs/http/ngx_http_upstream_module.html
解決策 2:
nginx
の時点で、 1.6.2 少なくとも、ロケーション ブロックの作業構文は次のとおりです。
location ~ \.php$ {
try_files $uri = 404;
fastcgi_pass php;
fastcgi_index index.php;
include fastcgi.conf;
}
つまり、http://
を指定しないでください。 php バックエンドを参照する前のプロトコル。 http://php
構文は proxy_pass
で使用されます 命令、fastcgi_pass
ではありません .