php-fpmのアップストリームとロケーションの使用の違いは何ですか?


18

私は探し回っていましたが、答えを見つけることができませんでした。誰かがこれを明確にしてくれれば、感謝します!

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;
}

ありがとう!

回答:


9

以下のように、という私を発見した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


23

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


PHPのip_hashをニーしますか?キープアライブはどうですか?
CMCDragonkai 14

1
それはする必要がありますfastcgi_pass php;代わりに
rhgb
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.