基本原理

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相关推荐

  1. linux nginx root目录,详解nginx.conf 中 root 目录设置问题

    在配置 nginx.conf 总会遇到一些问题,下面列举一些常见的问题并说明如何解决 1.相对路径的问题 例如配置文件中 location 设置 location ~ .php${ root html ...

  2. 在nginx.conf中配置https

    在nginx.conf中配置server段, 将证书mycert.pem和私钥pem添加到指定文件中 server { listen 443 ssl;       ssl on;       ssl_ ...

  3. linux更改nginx最大访问数,Linux下nginx服务的配置文件nginx.conf中模块的讲解之配置limit_conn_zone来限制并发连接数以及下载速率...

    一.限制并发连接数的配置方法如下: 1.在nginx.conf里的http{}里加上如下代码: # vim /usr/local/nginx/conf/nginx.conf #在其中的36行加入下面的 ...

  4. Nginx笔记-关于nginx.conf中proxy_pass中末尾不加/的坑

    目录 此坑带来的影响 解决方法 此坑带来的影响 这里在前后端分离开发过程中会遇到,使用Nginx,向前端服务发请求! 前端服务通过axios向后端发请求,如下: 这里会出现404的结果如下: 此处的解 ...

  5. docker安装nginx1.20.2并配置nginx.conf

    一.docker拉取nginx镜像 docker pull nginx:1.20.2 二.创建映射容器的文件目录 # 创建配置文件目录 mkdir -p /mydata/nginx/conf/ mkd ...

  6. Nginx 源码分析-- 模块module 解析执行 nginx.conf 配置文件流程分析 一

    搭建nginx服务器时,主要的配置文件 nginx.conf 是部署和维护服务器人员经常要使用到的文件, 里面进行了许多服务器参数的设置.那么nginx 以模块 module为骨架的设计下是如何运用模 ...

  7. nginx.conf 基本配置模板和结构

    文章目录 配置 nginx.conf 配置结构 nginx.conf 基本配置模板 如何验证效果 配置 nginx.conf 配置结构 ... #全局块 events { #events块 ... } ...

  8. 01_Nginx安装,nginx下部署项目,nginx.conf配置文件修改,相关文件配置

     1.下载Nginx,进入Nginx下载地址:http://nginx.org/ 点击nginx-1.8.0,进入:http://nginx.org/en/download.html,下载文件: ...

  9. Nginx配置中的log_format用法梳理(设置详细的日志格式)

    Nginx配置中的log_format用法梳理(设置详细的日志格式) nginx服务器日志相关指令主要有两条:一条是log_format,用来设置日志格式:另外一条是access_log,用来指定日志 ...

  10. nginx.conf删除与否网页都能访问(nginx没有生效)的问题

    发现一个问题: 无论nginx.conf是否存在,以及nginx服务是否在运行, 网页都能正常访问.也就是说,nginx并没有生效 -------------------------- 办法如下: F ...

最新文章

  1. 2022-2028年中国钢铁电商产业竞争现状及发展前景预测报告
  2. 这几款嵌入式软件测试工具,好用到起飞~
  3. 阿里云 SSL 证书 总结
  4. RunLoop深度探究以及有关面试题
  5. python【力扣LeetCode算法题库】322-零钱兑换(动态规划)
  6. nginx log记录请求响应日志及日志分割
  7. [python opencv 计算机视觉零基础到实战] 六、图像运算
  8. mysql主从复制时间配置_MySQL主从复制配置
  9. 杨辉三角python_Python面试150题汇总,都是常问的面试题!
  10. mysql中having的例子_有关mysql中having子句对组记录进行筛选的例子
  11. qt初步---Qt实现软件从Windows到Linux跨平台
  12. 【TWVRP】基于matlab灰狼算法求解带时间窗的车辆路径规划问题【含Matlab源码 361期】
  13. 爱特php文件管理器2.8_爱特全能网站文件专家
  14. 2008 SCI 影响因子(Impact Factor)
  15. 笔记本连接显示器后没有声音_电脑连接HDMI电视/显示器后没声音怎么解决
  16. 修改apk图标及名字
  17. 怎样解决ip访问受限问题
  18. iCoremail企业邮箱移动办公新突破
  19. TableView的使用
  20. PointNet++:Deep Hierarchical Feature Learning on Point Sets in a Metric Space

热门文章

  1. SharedPreferences存储图片对象与获取
  2. 当今社会到底更需要专才还是通才
  3. Flutter水波纹效果
  4. uniapp连接本地服务器请求超时
  5. 基于linux嵌入式浏览,基于LINUX的嵌入式浏览器的设计与 - 嵌入式操作系统 - 电子发烧友网...
  6. linux计划任务5个*分表代表什么,Linux定时任务Crontab命令
  7. syswow64删除文件_Win7系统电脑中的Syswow64是什么文件夹?能不能删除?
  8. 公司建站域名需要多少钱?
  9. 多开QQ出现多次验证码怎么办?
  10. Mycat分库分表优缺点分析