debian php-fpn_nginx中的 fastcgi_pass为什么有时候是unix:/tmp/php-fpm.sock,有时候是127.0.0.1:9000...

本文详细解析了Nginx与PHP-FPM之间的通信模式,包括通过UNIX Domain Socket和TCP协议的差异。UNIX Domain Socket适用于在同一台服务器上的通信,能避免TCP连接导致的TIME_WAIT问题,而TCP则适用于跨服务器通信。文中给出了配置示例,并阐述了两种通信方式的具体流程。
摘要由CSDN通过智能技术生成

nginx中的 fastcgi_pass为什么有时候是unix:/tmp/php-fpm.sock,有时候是127.0.0.1:9000

一种是 sock 文件 一种是通过 9000 的fpm端口

ps -ef | grep php-fpm   查看php-fpm所有的进程

ps -ef | grep php-fpn.conf 查看配置所在路径

netstat -lntp 查看监听端口  listen/network/tcp/port

这牵扯到了nginx和php的通信模式,上面所列的就是这两种,一种是利用系统本身socket的,一种是利用tcp协议的

两种协议有区别,

UNIX Domain Socket不经过网络,只是在系统内部进行通信,适用于php和nginx都装在同一台linux服务器上

tcp通信协议的也就是fastcgi_pass模式的既适用于php和nginx都装在同一台linux服务器上,同时又适用于不在同一台服务器上的,一般在同一个局域网中,也就是127.0.0.1的意义了

当然我们在真正的php搭建服务器环境的时候,具体用那种,就要看php-fpm.conf中使用的是哪种了

tcp方式:

php-fpm.conf: listen = 127.0.0.1:9000

nginx.conf: fastcgi_pass 127.0.0.1:9000;

UNIX Domain Socket方式:

php-fpm.conf: listen = /tmp/php-fpm.sock

nginx.conf: fastcgi_pass unix:/tmp/php-fpm.sock;

在我们真正实例中多数都是装在同一台服务器上,所以选择UNIX Domain Socket是比较合适的选择,因为这样可以避免数据传输经过tcp层造成导致TIME_WAIT连接过多的问题。

具体两个传输方式的流程如下

1.1 TCP Socket(本地回环127.0.0.1)方式的数据传输:

Nginx <=> socket <=> TCP/IP <=> socket <=> PHP-FPM

1.2 TCP Socket(Nginx和PHP-FPM位于不同服务器)的数据传输:

Nginx <=> socket <=> TCP/IP <=> 物理层 <=> 路由器 <=> 物理层 <=> TCP/IP <=> socket <=> PHP-FPM

2 UNIX Domain Socket方式的数据传输:

Nginx <=> socket <=> PHP-FPM

nginx配置:

server {

listen       80;

server_name  localhost;

root /home/work/project/public;

index  index.html index.htm index.php;

location / {

if (!-e $request_filename) {

rewrite  ^/(.*)$  /index.php/$1  last;

break;

}

}

#error_page  404              /404.html;

# redirect server error pages to the static page /50x.html

#

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   html;

}

set $root /home/work/cfgset/;

location ~ \.php(.*)$  {

fastcgi_pass   unix:/tmp/php-cgi.sock;

fastcgi_index  index.php;

fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

fastcgi_param  PATH_INFO  $fastcgi_path_info;

fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;

include        fastcgi_params;

}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

{

expires      30d;

}

location ~ .*\.(js|css)?$

{

expires      12h;

}

access_log  /var/logs/project/access.log;

error_log  /var/logs/project/error.log;

}

php-fpm配置:

[global]

pid = /var/run/php-fpm.pid

error_log = /var/log/php-fpm.log

log_level = notice

[www]

listen = /tmp/php-cgi.sock

;listen = 127.0.0.1:9000

listen.backlog = -1

listen.allowed_clients = 127.0.0.1

user = user

group =user

pm = dynamic

pm.max_children = 20

pm.start_servers = 1

pm.min_spare_servers = 1

pm.max_spare_servers = 20

request_terminate_timeout = 100

request_slowlog_timeout = 0

slowlog = var/log/slow.log

env[PATH]=$PATH

env[LD_LIBRARY_PATH]=$LD_LIBRARY_PATH

php_flag[display_errors] = Of

其中 nginx中的fastcgi_pass   与php-fpm.conf中listen = /tmp/php-cgi.sock保持一致。

若php-fpm.conf中配置为 listen = 127.0.0.1:9000 那么nginx中fastcgi_pass  为

fastcgi_pass  127.0.0.0.1:9000

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值