nginxを設定する際のfastcgi_passの設定問題は以下の通りです:
主に fastcgi_pass パラメータについて、
これら 2 つの方法の違いは何ですか? php7 ではどちらを使用する必要がありますか?
Nginx と PHP-FPM 間のプロセス間通信には 2 つの方法があり、1 つは TCP で、もう 1 つは UNIX ドメイン ソケットです。 TCP は IP プラス ポートであり、UNIX ドメイン ソケットは経由しません。 Nginx と PHP-FPM の両方が同じサーバー上にあるシナリオでのみ使用できます。どちらを使用するかは PHP-FPM 構成によって異なります: 方法 1: php-fpm.conf: listen = 127.0.0.1 :9000 nginx.conf: fastcgi_pass 127.0 .0.1:9000;方法 2:php-fpm.conf: listen = /tmp/php-fpm.socknginx.conf: fastcgi_pass unix:/tmp/php-fpm. sock;ここで php-fpm.sock これは php-fpm によって生成されたファイルで、タイプは srw-rw---- です。
UNIX ドメイン ソケットは、現在広く使用されている IPC メカニズムであり、X Window サーバーと GUI プログラムの間の通信は、システム カーネルで行われます。 UNIX ドメイン ソケットと長い接続の両方で、TCP の短い接続が頻繁に作成されることによって発生する過剰な TIME_WAIT 接続の問題を回避できます。プロセス間で通信する 2 つのプログラムの場合、UNIX ドメイン ソケットのプロセスは TCP に移行しません。レイヤー、ファイルとストリームソケットの形式で直接通信します。TCP ソケットの場合は、IP レイヤーに移動する必要があります。
UNIX ドメイン ソケット:Nginx <=> PHP-FPM TCP ソケット (ローカル ループバック): Nginx <=> TCP/IP <=>ソケット <=> PHP-FPM TCP ソケット (Nginx と PHP-FPM は別のサーバーにあります): Nginx <=> 物理層 <=> >=> 物理層<=> PHP-FPM
Unix ソケットを使用して接続します (デフォルト): mysql -uroot -p --protocol=socket --socket=/tmp /mysql.sock TCP 接続を使用します:mysql -uroot -p --protocol=socket --socket=/tmp/mysql.sock使用TCP连接:mysql -uroot -p --protocol=tcp --host=127.0.0.1 --port=3306mysql -uroot -p --protocol=tcp --host=127.0.0.1 --port=3306
mysql -uroot -p --protocol=socket --socket=/tmp /mysql.sock
mysql -uroot -p --protocol=socket --socket=/tmp/mysql.sock
mysql -uroot -p --protocol=tcp --host=127.0.0.1 --port=3306
Nginx と PHP-FPM 間のプロセス間通信には 2 つの方法があり、1 つは TCP で、もう 1 つは UNIX ドメイン ソケットです。
TCP は IP プラス ポートであり、UNIX ドメイン ソケットは経由しません。 Nginx と PHP-FPM の両方が同じサーバー上にあるシナリオでのみ使用できます。どちらを使用するかは PHP-FPM 構成によって異なります:
方法 1:
php-fpm.conf: listen = 127.0.0.1 :9000
nginx.conf: fastcgi_pass 127.0 .0.1:9000;
方法 2:
php-fpm.conf: listen = /tmp/php-fpm.sock
nginx.conf: fastcgi_pass unix:/tmp/php-fpm. sock;
ここで php-fpm.sock これは php-fpm によって生成されたファイルで、タイプは srw-rw---- です。
UNIX ドメイン ソケットは、現在広く使用されている IPC メカニズムであり、X Window サーバーと GUI プログラムの間の通信は、システム カーネルで行われます。 UNIX ドメイン ソケットと長い接続の両方で、TCP の短い接続が頻繁に作成されることによって発生する過剰な TIME_WAIT 接続の問題を回避できます。プロセス間で通信する 2 つのプログラムの場合、UNIX ドメイン ソケットのプロセスは TCP に移行しません。レイヤー、ファイルとストリームソケットの形式で直接通信します。TCP ソケットの場合は、IP レイヤーに移動する必要があります。
UNIX ドメイン ソケット:
mysql コマンド ライン クライアントと同様に、mysqld サービスに接続するには 2 つの同様の方法があります:Nginx <=> PHP-FPM
TCP ソケット (ローカル ループバック):
Nginx <=> TCP/IP <=>ソケット <=> PHP-FPM
TCP ソケット (Nginx と PHP-FPM は別のサーバーにあります):
Nginx <=> 物理層 <=> >=> 物理層<=> PHP-FPM
Unix ソケットを使用して接続します (デフォルト):
mysql -uroot -p --protocol=socket --socket=/tmp /mysql.sock
TCP 接続を使用します:
mysql -uroot -p --protocol=socket --socket=/tmp/mysql.sock
使用TCP连接:
mysql -uroot -p --protocol=tcp --host=127.0.0.1 --port=3306
mysql -uroot -p --protocol=tcp --host=127.0.0.1 --port=3306