Nginx连接fastcgi的两种方式
- unix domain socket
- TCP
两者之间的区别
- TCP适用TCP端口连接,一般形式:127.0.0.1:9000
- socket一般形式为/tmp/php-cgi.sock
- 压力不大的情况下,二者区别不大,压力比较满的情况下,适用套接字方式(unix domain socket)更省资源
- TCP模式通过网络通信,可以跨机器;套接字不行,服务必须部署在同一机器上
什么是域Socket配置
Uninx doamin socket 或者 IPCsocket是一种终端,可以是同一操作系统上的两个或者多个进程间进行数据通信,与管道相比,Uninx domain sockets可以使用字节流和数据队列,而管道通信只能通过字节流。Uninx domain sockets不使用网络底层协议来通信,是POSIX操作系统里的一种组件,使用系统文件的地址来作为自己的身份,可以被系统进程引用,两个进程可以同时打开一个Unix domain sockets文件来进行通信,不过这种通信方式是发生在系统内核里,不会在网络里传播
创建socket文件
touch /data/php-fcgi.sock
chown www:www /data/php-fcgi.sock
chmod 777 /data/php-fcgi.sock
Nginx相关配置
location ~\.php$ {
root /home/wwwroot;
include fastcgi_params;
#fastcgi_pass 127.0.0.1:9000; #TCP模式
fastcgi_pass unix:/data/php-fcgi.sock; #套接字模式
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME/$fastcgi_script_name;
}
PHP-FPM配置
/etc/php/php-fpm.conf //不同环境具体路径不一样
user = www
group = www
;listen = 127.0.0.1:9000 //非socket模式
listen = /data/php-fcgi.sock //socket模式
总结
- socket模式,不能通过网络通信,只能适用于单台机器,效率更高
网友评论