End.

fastcgi_pass配置为sock与9000区别


区别一:两种协议有区别


Socket方式

UNIX Domain Socket不经过网络,只是在系统内部进行通信,适用于php和nginx都装在同一台linux服务器上。

流程:Nginx <=> socket <=> PHP-FPM


tcp方式

既适用于php和nginx都装在同一台linux服务器上,同时又适用于不在同一台服务器上的,一般在同一个局域网中。
流程:

- 同一台服务器:Nginx <=> socket <=> TCP/IP <=> socket <=> PHP-FPM

- 不同服务:Nginx <=> socket <=> TCP/IP <=> 物理层 <=> 路由器 <=> 物理层 <=> TCP/IP <=> socket <=> PHP-FPM


区别二:Nginx配置、php-fpm.conf配置

Socket方式

php-fpm.conf 文件配置

listen = /tmp/php-fpm.sock

nginx.conf 文件配置

fastcgi_pass unix:/tmp/php-fpm.sock;


tcp方式

php-fpm.conf 文件配置

listen = 127.0.0.1:9000

nginx.conf 文件配置

fastcgi_pass 127.0.0.1:9000;



我们真正实例中多数都是装在同一台服务器上,所以选择UNIX Domain Socket是比较合适的选择.

因为这样可以避免数据传输经过tcp层造成导致TIME_WAIT连接过多的问题。

End.