Nginx が fastcgi に接続するには、unix ドメイン ソケットと TCP の 2 つの方法があります。Unix ドメイン ソケットまたは IPC ソケットは、同じオペレーティング システム上の 2 つ以上のプロセスが相互に通信できるようにする端末です。パイプとは対照的に、Unix ドメイン ソケットはバイト ストリームとデータ キューの両方を使用できますが、パイプ通信はバイト ストリーム経由でのみ可能です。 Unix ドメイン ソケットのインターフェイスはインターネット ソケットに非常に似ていますが、通信に基礎となるネットワーク プロトコルを使用しません。 Unix ドメイン ソケットの機能は、POSIX オペレーティング システムのコンポーネントです。
TCP と UNIX ドメイン ソケット メソッドの比較
TCP は TCP ポートを使用して 127.0.0.1:9000 に接続し、Socket は UNIX ドメイン ソケットを使用してソケット /dev/shm に接続します/php-cgi.sock (多くのチュートリアルではパス /tmp が使用され、パス /dev/shm はディスクよりもはるかに高速な tmpfs です)
fastcgi_pass unix:/tmp/php-cgi.sock fastcgi_pass 127.0.0.1:9000
サーバーの負荷が高くない場合、 tcp とソケットの違いはあまりありませんが、圧力が高い場合にはソケット方式の方が優れています。
PHP 5.3 以降で TCP をソケット モードに変更するための設定方法は次のとおりです。
php-fpm.conf (/usr/local/php/etc/php-fpm. conf)
;listen = 127.0.0.1:9000 listen = /dev/shm/php-cgi.sock
nginx設定ファイルのサーバーセクションの設定を変更し、httpモードをソケットモードに変更します
location ~ .*.(php|php5)?$ { #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; }
php-fpmとnginx
service nginx restart service php-fpm restart ls -al /dev/shm
を再起動しますphp-cgi .sock ファイルの unix ソケット タイプを確認できます。理論上、unix ソケットはネットワークを経由しないため効率的ですが、安定性はあまり理想的ではありません。
以上がNginxのunixソケットとtcpソケットの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。