记 nginx fastcgi_pass 配置一则
今天是国庆第二天,首先还是祝大家生活愉快~,不过在前一个小时前我内心是忧郁的,因为我犯了一个一山不容二虎的错误,上操作
fastcgi_pass 我同时指定了俩,以至于我在重起 nginx 时得到以下错误
nginx: [emerg] "fastcgi_pass" directive is duplicate in /etc/nginx/conf.d/wp.conf:58
根据错误提示 + google,虽然问题得到了解决,但对其中的细节原由并不是很了解,跟着搜了很多文章,知道 Nginx 和 PHP-FPM 的进程间通信有两种方式
一、TCP / IP
ip + 端口号,nginx 默认 127.0.0.1:9000,这种方式需要经过网络,可以跨服务器访问。
php-fpm 和 nginx 在同一台服务器处理流程
nginx <=> socket <=> TCP/IP <=> socket <=> php-fpm
php-fpm 和 nginx 不在一台服务器处理流程
nginx <=> socket <=> TCP/IP <=> 物理层 <=> 路由器 <=> 物理层 <=> TCP/IP <=> socket <=> php-fpm
配置如下:
/etc/php/7.0/fpm/www.conf ==> listen 127.0.0.1:9000(没有就添加一行)
/etc/nginx/file_name.conf ==> fastcgi_pass 127.0.0.1:9000(一般打开注释就行)
二、UNIX Domain Socket( php7 默认 )
此方式, 是 套接字 不经过网络只能用于 nginx 跟 php-fpm 都在同一服务器的场景
处理流程: Nginx <=> socket <=> PHP-FPM
配置如下:
/etc/php/7.0/fpm/www.conf ==> /run/php/php7.0-fpm.sock
/etc/nginx/file_name.conf ==> /run/php/php7.0-fpm.sock
参考文献
- https://segmentfault.com/q/101000000485404...
- https://zh.wikipedia.org/wiki/Unix%E5%9F%9...
- https://my.oschina.net/yzbty32/blog/549305
本作品采用《CC 协议》,转载必须注明作者和本文链接