本文介绍 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.

file

Nginx 反向代理

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

location ^~ /seckill_query/ {proxy_pass http://ris.filemail.gdrive:8090/;proxy_set_header Host ris.filemail.gdrive;
}location ^~ /push_message/ {proxy_pass http://channel.filemail.gdrive:8090/;proxy_set_header Host channel.filemail.gdrive;
}location ^~ /data/ {proxy_pass http://ds.filemail.gdrive:8087/;proxy_set_header Host ds.filemail.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复制代码

问题

反向代理和负载均衡是什么关系

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

proxy_pass 和 fastcgi_pass 的区别

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

file

原文地址:blog.tanteng.me/2017/11/ngi…

PHP-FPM,Nginx,FastCGI 之间的关系相关推荐

  1. nginx fastcgi php-fpm的关系梳理

    CGI(Common Gateway Interface) CGI全称是"公共网关接口"(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序 ...

  2. PHP-FPM,Nginx,FastCGI 三者之间的关系

    2019独角兽企业重金招聘Python工程师标准>>> 本文介绍 PHP-FPM,Nginx,FastCGI 三者之间的关系,以及 Nginx 反向代理和负载均衡的配置. PHP-F ...

  3. php-cli和php-fpm FastCgi与PHP-fpm之间的关系

    php-cli和php-fpm cli就是我们在命令行里使用的那个php命令,其实它也可以提供HTTP服务,因为它内置了一个HTTP服务器: php-fpm是一个多进程架构的FastCGI服务,内置p ...

  4. nginx、fastCGI、php-fpm关系梳理(转载参考)

    nginx.fastCGI.php-fpm关系梳理 还可以参考:http://www.cnblogs.com/skynet/p/4173450.html 前言: Linux下搭建nginx+php+m ...

  5. CGI,FastCGI和PHP-FPM之间的关系和区别

    CGI,FastCGI和PHP-FPM之间的关系和区别. 什么是CGI? 早期的web server只可以处理简单的静态web文件,但是随着技术的发展出现动态语言如PHP,Python.PHP语言交给 ...

  6. 运行中的Nginx进程间的关系

    第2章 Nginx的配置 Nginx拥有大量官方发布的模块和第三方模块,这些已有的模块可以帮助我们实现Web服务器上很多的功能.使用这些模块时,仅仅需要增加.修改一些配置项即可.因此,本章的目的是熟悉 ...

  7. Nginx架构篇(一)动态网站架构、LNMP、FastCGI、nginx+fastcgi运行原理

    一.动态网站架构 资源文件识别 语言识别 框架识别 index.php 开源的php Window/Linux+nginx+php+mysql index.py 开源的python Window/Li ...

  8. WSGI、Flask及Werkzeug三者之间的关系

    目录 一.WSGI是什么? 二.Werkzeug是什么 三.Flask的WSGI实现 一.WSGI是什么? WSGI是一套接口规范.一个WSGI程序用以接受客户端请求,传递给应用,再返回服务器的响应给 ...

  9. Nginx FastCGI的运行原理

    一.FastCGI 1.介绍 CGI全称通用网关接口 Commmon Gateway Interface 用于HTTP服务上的程序服务通信交流的一种工具,CGI程序须运行在网络服务器上. 传统CGI接 ...

最新文章

  1. 番茄工作法发明人作序推荐《番茄工作法图解》
  2. 管与c++中容量的重新分配问题
  3. 【CMD】管道符(|)
  4. 学习、掌握运营岗位必备的基本能力和思维
  5. mybatis中refid是什么意思
  6. mega2560电脑识别不到端口后_Qt音视频开发41-人脸识别嵌入式
  7. 字符串过滤非数字c语言,【新手】【求思路】如何判断用户输入的字符串中是否含有非数字?...
  8. Swift学习笔记十二
  9. ORACLE sid,pid,spid总结
  10. 2017《Java技术》预备作业 杨阳
  11. java相关的国际化步骤_Java语言资源国际化步骤
  12. 802.11 monitor模式
  13. OpenCV-Python教程8-图像混合
  14. Github | 标星 1W+ 清华大学计算机系课程攻略!
  15. mysql是bsd协议吗_开源许可证 GPL、BSD、MIT、Mozilla、Apache 和 LGPL 的区别
  16. r语言平均值显著性检验_R语言与显著性检验学习笔记
  17. 联邦学习(Federated Learning)
  18. k-mer matching算法以及它存储受限的原因
  19. 从DDR到DDR4,内存核心频率其实基本上就没太大的进步
  20. 解决window聚焦图片不自动更新,没有“喜欢么”信息提示框问题

热门文章

  1. 程序员如何开启机器学习之路
  2. SQLite学习和使用
  3. double类型字符串转换成一个纯数字字符串和一个小数点位数的c++代码
  4. Leetcode 笔记 116 - Populating Next Right Pointers in Each Node
  5. SQLServer2005中的CTE递归查询得到一棵树
  6. Visual C#.Net网络程序开发-Tcp篇(1)
  7. 通过例子理解 k8s 架构 - 每天5分钟玩转 Docker 容器技术(122)
  8. CentOS 6.5 x64 Redis 安装
  9. Android开源项目汇总
  10. 用链表队列实现基数排序;