nginx.conf中的fastcgi_pass
基本原理
nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。
nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被nginx。
2种连接方式
fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
为什么会有2种fastcgi_pass
Nginx和PHP-FPM的进程间通信有两种方式,一种是TCP,一种是UNIX Domain Socket.
其中TCP是IP加端口,可以跨服务器.而UNIX Domain Socket不经过网络,只能用于Nginx跟PHP-FPM都在同一服务器的场景.用哪种取决于你的PHP-FPM配置:
方式1:
php-fpm.conf: listen = 127.0.0.1:9000
nginx.conf: fastcgi_pass 127.0.0.1:9000;
方式2:
php-fpm.conf: listen = /tmp/php-fpm.sock
nginx.conf: fastcgi_pass unix:/tmp/php-fpm.sock;
其中php-fpm.sock是一个文件,由php-fpm生成,类型是srw-rw----.
UNIX Domain Socket可用于两个没有亲缘关系的进程,是目前广泛使用的IPC机制,比如X Window服务器和GUI程序之间就是通过UNIX Domain Socket通讯的.这种通信方式是发生在系统内核里而不会在网络里传播.UNIX Domain Socket和长连接都能避免频繁创建TCP短连接而导致TIME_WAIT连接过多的问题.对于进程间通讯的两个程序,UNIX Domain Socket的流程不会走到TCP那层,直接以文件形式,以stream socket通讯.如果是TCP Socket,则需要走到IP层,对于非同一台服务器上,TCP Socket走的就更多了.
socket是神马?摘抄一段描述:
Socket 可以被定义描述为两个应用通信通道的端点。一个 Socket 端点可以用 Socket 地址来描述, Socket 地址结构由 IP 地址,端口和使用协议组成( TCP or UDP )。http协议可以通过socket实现,socket在传输层上实现。从这个角度来说,socket介于应用层和传输层之间。但是socket作为一种进程通信机制,操作系统分配唯一一个socket号,是依赖于通信协议的,但是这个通信协议不仅仅是 tcp或udp,也可以是其它协议。
在同一台服务器上,用tcp socket与unix domain socket有什么区别?
如图所示,对于进程间通讯的两个程序,unix domain socket的流程不会走到TCP 那层,直接以文件形式,以stream socket通讯。如果是TCP socket,则需要走到IP层。对于非同一台服务器上,TCP socket走的就更多了。
例子:
UNIX Domain Socket:
Nginx <=> socket <=> PHP-FPM
TCP Socket(本地回环):
Nginx <=> socket <=> TCP/IP <=> socket <=> PHP-FPM
TCP Socket(Nginx和PHP-FPM位于不同服务器,不过也只能这样):
Nginx <=> socket <=> TCP/IP <=> 物理层 <=> 路由器 <=> 物理层 <=> TCP/IP <=> socket <=> PHP-FPM
像mysql命令行客户端连接mysqld服务也类似有这两种方式:
使用Unix Socket连接(默认):
mysql -uroot -p --protocol=socket --socket=/tmp/mysql.sock
使用TCP连接:
mysql -uroot -p --protocol=tcp --host=127.0.0.1 --port=3306
如何配置
php5.3之后的版本,php-fpm.conf里的listen的默认配置是127.0.0.1:9000,就不会生成php-fpm.sock,因此如果需要Nginx里的配置有链接tmp/php-fpm.sock的话,需要将listen的地址配置成和nginx的配置文件一致,同时保证这个路径已经存在,这样在启动./php-fpm的时候,会在对应路径上自动生成php-fpm.sock,例如:
让PHP-FPM使用Unix套接字
打开 /etc/php-fpm.d/www.conf
vim /etc/php-fpm.d/www.conf
修改后如下:
;listen = 127.0.0.1:9000 listen = /var/run/php-fpm/php-fpm.sock
修改www.conf配置文件里的listen.mode=0666就可以设置默认权限,不用手动修改了
然后重新加载 PHP-FPM:
systemctl restart php-fpm.
接下修改nginx的配置和所有的虚拟主机
fastcgi_pass 127.0.0.1:9000; ==>fastcgi_pass unix:/tmp/php-fpm.sock;
打开nginx.conf
vim /etc/nginx/conf.d/default.conf
fastcgi_pass unix:/tmp/php-fpm.sock;
最后重新加载 nginx:
systemctl restart nginx.
nginx.conf中的fastcgi_pass相关推荐
- linux nginx root目录,详解nginx.conf 中 root 目录设置问题
在配置 nginx.conf 总会遇到一些问题,下面列举一些常见的问题并说明如何解决 1.相对路径的问题 例如配置文件中 location 设置 location ~ .php${ root html ...
- 在nginx.conf中配置https
在nginx.conf中配置server段, 将证书mycert.pem和私钥pem添加到指定文件中 server { listen 443 ssl; ssl on; ssl_ ...
- linux更改nginx最大访问数,Linux下nginx服务的配置文件nginx.conf中模块的讲解之配置limit_conn_zone来限制并发连接数以及下载速率...
一.限制并发连接数的配置方法如下: 1.在nginx.conf里的http{}里加上如下代码: # vim /usr/local/nginx/conf/nginx.conf #在其中的36行加入下面的 ...
- Nginx笔记-关于nginx.conf中proxy_pass中末尾不加/的坑
目录 此坑带来的影响 解决方法 此坑带来的影响 这里在前后端分离开发过程中会遇到,使用Nginx,向前端服务发请求! 前端服务通过axios向后端发请求,如下: 这里会出现404的结果如下: 此处的解 ...
- docker安装nginx1.20.2并配置nginx.conf
一.docker拉取nginx镜像 docker pull nginx:1.20.2 二.创建映射容器的文件目录 # 创建配置文件目录 mkdir -p /mydata/nginx/conf/ mkd ...
- Nginx 源码分析-- 模块module 解析执行 nginx.conf 配置文件流程分析 一
搭建nginx服务器时,主要的配置文件 nginx.conf 是部署和维护服务器人员经常要使用到的文件, 里面进行了许多服务器参数的设置.那么nginx 以模块 module为骨架的设计下是如何运用模 ...
- nginx.conf 基本配置模板和结构
文章目录 配置 nginx.conf 配置结构 nginx.conf 基本配置模板 如何验证效果 配置 nginx.conf 配置结构 ... #全局块 events { #events块 ... } ...
- 01_Nginx安装,nginx下部署项目,nginx.conf配置文件修改,相关文件配置
1.下载Nginx,进入Nginx下载地址:http://nginx.org/ 点击nginx-1.8.0,进入:http://nginx.org/en/download.html,下载文件: ...
- Nginx配置中的log_format用法梳理(设置详细的日志格式)
Nginx配置中的log_format用法梳理(设置详细的日志格式) nginx服务器日志相关指令主要有两条:一条是log_format,用来设置日志格式:另外一条是access_log,用来指定日志 ...
- nginx.conf删除与否网页都能访问(nginx没有生效)的问题
发现一个问题: 无论nginx.conf是否存在,以及nginx服务是否在运行, 网页都能正常访问.也就是说,nginx并没有生效 -------------------------- 办法如下: F ...
最新文章
- 2022-2028年中国钢铁电商产业竞争现状及发展前景预测报告
- 这几款嵌入式软件测试工具,好用到起飞~
- 阿里云 SSL 证书 总结
- RunLoop深度探究以及有关面试题
- python【力扣LeetCode算法题库】322-零钱兑换(动态规划)
- nginx log记录请求响应日志及日志分割
- [python opencv 计算机视觉零基础到实战] 六、图像运算
- mysql主从复制时间配置_MySQL主从复制配置
- 杨辉三角python_Python面试150题汇总,都是常问的面试题!
- mysql中having的例子_有关mysql中having子句对组记录进行筛选的例子
- qt初步---Qt实现软件从Windows到Linux跨平台
- 【TWVRP】基于matlab灰狼算法求解带时间窗的车辆路径规划问题【含Matlab源码 361期】
- 爱特php文件管理器2.8_爱特全能网站文件专家
- 2008 SCI 影响因子(Impact Factor)
- 笔记本连接显示器后没有声音_电脑连接HDMI电视/显示器后没声音怎么解决
- 修改apk图标及名字
- 怎样解决ip访问受限问题
- iCoremail企业邮箱移动办公新突破
- TableView的使用
- PointNet++:Deep Hierarchical Feature Learning on Point Sets in a Metric Space