nginx 与 PHP-fpm 通信的两种方式

2018-03-08 15:32:17 阅读:2 编辑

简述

在 Linux 中,nginx 服务器和 PHP-fpm 可以通过 tcp socket 和 unix socket 两种方式实现。

unix socket 是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信。这种方式需要再 nginx 配置文件中填写 PHP-fpm 的 pid 文件位置,效率要比 tcp socket 高。

tcp socket 的优点是可以跨服务器,当 nginx 和 PHP-fpm 不在同一台机器上时,只能使用这种方式。

配置方法

tcp socket

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

unix socket

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

用哪个方式,在 /usr/local/PHP/etc/PHP-fpm.conf 里配置

[www]
listen = /dev/shm/PHP-cgi.sock
;listen =127.0.0.1:9000

PHP-fpm 控制命令

service PHP-fpm {start|stop|restart|reload|status}