nginx和php的两种通信方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx和php的两种通信方式相关的知识,希望对你有一定的参考价值。

参考技术A nginxphp的两种通信方式-unix socket和tcp socket

1、两者Nginx配置

unix socket

需要在nginx配置文件中填写php-fpm运行的pid文件地址。

location ~ \.php$

    include fastcgi_params;

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;;

    fastcgi_pass unix:/var/run/php5-fpm.sock;

    fastcgi_index index.php;



tcp socket

需要在nginx配置文件中填写php-fpm运行的ip地址和端口号。

location ~ \.php$

    include fastcgi_params;

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;;

    fastcgi_pass 127.0.0.1:9000;

    fastcgi_index index.php;



2、两者比较

从上面的图片可以看,unix socket减少了不必要的tcp开销,而tcp需要经过loopback,还要申请临时端口和tcp相关资源。但是,unix socket高并发时候不稳定,连接数爆发时,会产生大量的长时缓存,在没有面向连接协议的支撑下,大数据包可能会直接出错不返回异常。tcp这样的面向连接的协议,多少可以保证通信的正确性和完整性。

3、选择建议:如果是在同一台服务器上运行的nginx和php-fpm,并发量不超过1000,选择unix socket,因为是本地,可以避免一些检查操作(路由等),因此更快,更轻。 如果面临高并发业务,我会选择使用更可靠的tcp socket,以负载均衡、内核优化等运维手段维持效率。

以上是关于nginx和php的两种通信方式的主要内容,如果未能解决你的问题,请参考以下文章

Nginx和php交互的两种方式

FastCGI特点原理nginx与php-fpm两种通信方式对比

nginx 与fastcgi通信方式

详解Nginx 和 PHP 的两种部署方式的对比

nginx与php-fpm通讯方式

不同VLAN之间相互通信的两种方式