资讯专栏INFORMATION COLUMN

PHP-FPM,Nginx,FastCGI 之间的关系

sumory / 3218人阅读

摘要:本文介绍三者之间的关系,以及反向代理和负载均衡的配置。先使用负载均衡模块找到一台主机,再使用模块实现与这台主机的交互。负载均衡配置该例定义了一个的负载均衡配置,通过反向代理指令应用这个配置。

本文介绍 PHP-FPM,Nginx,FastCGI 三者之间的关系,以及 Nginx 反向代理和负载均衡的配置。

PHP-FPM,Nginx,FastCGI 之间的关系

FastCGI 是一个协议,它是应用程序和 WEB 服务器连接的桥梁。Nginx 并不能直接与 PHP-FPM 通信,而是将请求通过 FastCGI 交给 PHP-FPM 处理。

location ~ .php$ {
    try_files $uri /index.php =404;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_buffers 16 16k;
    fastcgi_buffer_size 32k;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

这里 fastcgi_pass 就是把所有 php 请求转发给 php-fpm 进行处理。通过 netstat 命令可以看到,127.0.0.1:9000 这个端口上运行的进程就是 php-fpm.

Nginx 反向代理

Nginx 反向代理最重要的指令是 proxy_pass,如:

location ^~ /seckill_query/ {
    proxy_pass http://ris.xxmail.gdrive:8090/;
    proxy_set_header Host ris.xxmail.gdrive;
}
 
location ^~ /push_message/ {
    proxy_pass http://channel.xxmail.gdrive:8090/;
    proxy_set_header Host channel.xxmail.gdrive;
}
 
location ^~ /data/ {
    proxy_pass http://ds.xxmail.gdrive:8087/;
    proxy_set_header Host ds.xxmail.gdrive;
}

通过 location 匹配 url 路径,将其转发到另外一个服务器处理。

通过负载均衡 upstream 也可以实现反向代理。

Nginx 负载均衡

介绍一下 upstream 模块:

负载均衡模块用于从”upstream”指令定义的后端主机列表中选取一台主机。nginx先使用负载均衡模块找到一台主机,再使用upstream模块实现与这台主机的交互。

负载均衡配置:

upstream php-upstream {
    ip_hash;
 
    server 192.168.0.1;
    server 192.168.0.2;
}
 
location / {
    root   html;
    index  index.html index.htm;
    proxy_pass http://php-upstream;
}

该例定义了一个 php-upstream 的负载均衡配置,通过 proxy_pass 反向代理指令应用这个配置。这里用的 ip_hash 算法,负载均衡的算法有多种,就不一一列举了。

负载均衡也可以用在 fastcgi_pass 上。

如:

fastcgi_pass http://php-upstream

如果使用负载均衡,可能存在一个 session 失效的问题,你的每次请求可能分配到不同的服务器,一个解决方法是把 Memcached 或 Redis 作为 session 存储的方式,而且还可以提高性能。

一些问题 反向代理和负载均衡是什么关系

反向代理和负载均衡这两个词经常出现在一起,但他们实际上是不同的概念,负载均衡它更多的是强调的是一种算法或策略,将请求分布到不同的机器上,因此实际上也起到了反向代理的作用。

proxy_pass 和 fastcgi_pass 的区别

一个是反向代理模块,一个是转发给 factcgi 后端处理。

(原文地址:https://blog.tanteng.me/2017/...)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39699.html

相关文章

  • FastCgiPHP-fpm 之间关系

    摘要:接下来解析器会解析文件,初始化执行环境,然后处理请求,再以规定规定的格式返回处理后的结果,退出进程。好了,是个协议,跟进程什么的没关系。的管理对象是。 原文分享自segmentfault @尹川的回答,搞不清FastCgi与PHP-fpm之间是个什么样的关系 若涉及侵权,请联系我删除 我在网上查fastcgi与php-fpm的关系,查了快一周了,基本看了个遍,真是众说纷纭,没一个权...

    WrBug 评论0 收藏0
  • 困扰已久问题cgi、fastcgiPHP-fpm汇总

    摘要:通过或在服务器上运行时可以使用的可执行文件,可以理解为解释器也有说是官方的进程管理器,至于是什么文章后面再分析,这里就当作解释器。就是为了解决的问题,制定的协议。 一个模糊的概念 无论是php,python编程语言,还是apache,nginx服务器对于cgi协议是个绕不开的话题。安装,部署都会经常的看到,那么它们到底是干什么的,网上的答案非常的多!今天通过它们进行一波汇总,彻底告别这...

    nidaye 评论0 收藏0
  • 困扰已久问题cgi、fastcgiPHP-fpm汇总

    摘要:通过或在服务器上运行时可以使用的可执行文件,可以理解为解释器也有说是官方的进程管理器,至于是什么文章后面再分析,这里就当作解释器。就是为了解决的问题,制定的协议。 一个模糊的概念 无论是php,python编程语言,还是apache,nginx服务器对于cgi协议是个绕不开的话题。安装,部署都会经常的看到,那么它们到底是干什么的,网上的答案非常的多!今天通过它们进行一波汇总,彻底告别这...

    Hwg 评论0 收藏0
  • 困扰已久问题cgi、fastcgiPHP-fpm汇总

    摘要:通过或在服务器上运行时可以使用的可执行文件,可以理解为解释器也有说是官方的进程管理器,至于是什么文章后面再分析,这里就当作解释器。就是为了解决的问题,制定的协议。 一个模糊的概念 无论是php,python编程语言,还是apache,nginx服务器对于cgi协议是个绕不开的话题。安装,部署都会经常的看到,那么它们到底是干什么的,网上的答案非常的多!今天通过它们进行一波汇总,彻底告别这...

    Winer 评论0 收藏0
  • 初中级PHP面试基础汇总

    摘要:如何实现持久化持久化,将在内存中的的状态保存到硬盘中,相当于备份数据库状态持久化,持久化是通过保存服务器锁执行的写状态来记录数据库的。 showImg(https://segmentfault.com/img/bVbejmD?w=643&h=404); 这是我整理的一套面试题,老铁们看看就当复习了哦 概述 感觉现在发面试题有些冷门,就跟昨天德国那场似的,不过看看当提前复习了。提前备战。...

    B0B0 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<