百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>网页制作> php 与 nginx 的处置方式及nginx与php-fpm通讯的两种方式
分享文章到:

php 与 nginx 的处置方式及nginx与php-fpm通讯的两种方式

发布时间:05/20 来源:未知 浏览: 关键词:

先给大家介绍下php 与 nginx 的两种处置方式,详细内容如下所示:

1.IP:Port 监听方式

php-fpm
docker pull PHP:2.4-alpine
nginx.conf
fastcgi_pass 127.0.0.1:9000;

php-fpm 在容器里的 nginx.conf

location /php
    {     
      proxy_set_header Host $host:$server_port;
      proxy_pass http://138.38.38.111:80/;
    }

2.UDS 方式监听

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

3.留意

php-fpm用ip:port方式创立链接,

nginx不要用unix socket方式创立链接,用ip:port方式创立连接就行

下面看下nginx与php-fpm通讯的两种方式

在linux中,nginx效劳器和php-fpm可以通过tcp socket和unix socket两种方式实现。

unix socket是一种终端,可以使统一台操纵系统上的两个或多个进程停止数据通讯。这种方式需要再nginx配置文件中填写php-fpm的pid文件位置,效力要比tcp socket高。

tcp socket的长处是可以跨效劳器,当nginx和php-fpm不在统一台机器上时,只能使用这种方式。

windows系统只能使用tcp socket的通讯方式

配置办法

tcp socket

tcp socket通讯方式,需要在nginx配置文件中填写php-fpm运转的ip地址和端口号。

location ~ \.php$ {
  include fastcgi_params;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
}

unix socket

unix socket通讯方式,需要在nginx配置文件中填写php-fpm运转的pid文件地址。

location ~ \.php$ {
  include fastcgi_params;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;;
  fastcgi_pass unix:/var/run/php5-fpm.sock;
  fastcgi_index index.php;
}

php-fpm的运转端口号和socket文件的地址都是在php-fpm.conf中配置的。 

php-fpm.conf文件在php安装文件的/etc目录下,

比方你的php安装在/opt/php目录,则应当是/opt/php/php-fpm.conf。

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;  'ip.add.re.ss:port'  - to listen on a TCP socket to a specific IPv4 address on
;              a specific port;
;  '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
;              a specific port;
;  'port'         - to listen on a TCP socket to all IPv4 addresses on a
;              specific port;
;  '[::]:port'      - to listen on a TCP socket to all addresses
;              (IPv6 and IPv4-mapped) on a specific port;
;  '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 127.0.0.1:9000
listen = /var/run/php-fpm.sock

通过注释可以看到,php-fpm的listen指令可以通过五种方式处置FastCGI恳求,离别是:

1. ipv4:端口号 
2. ipv6:端口号 
3. port相当于 0.0.0.0:port,本机所有ipv4对应的端口号 
4. [::]:port,包括ipv4和ipv6 
5. unix socket文件

直接配置使用unix socket文件之后,会碰到access deny的问题,由于socket文件本质上还是一个文件,存在权限控制问题,默许由root会员创立,因此nginx进程无权限访问,应当配置如下命令:

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions.
; Default Values: user and group are set as the running user
;         mode is set to 0660
listen.owner = www
listen.group = www 
listen.mode = 0660
可以配置nginx和php-fpm都是用www会员,这样就不会存在权限问题,当然也可以创立不一样的会员,然后参加统一个组,便于分配权限。
打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有164人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板