Nginx反向代理功能-实现FastCGI实战案例

                                          作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

 

一.FastCGI概述

1>.CGI的由来

  最早的Web服务器只能简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html文件,但是后期随着网站功能增多网站开发也越来越复杂,以至于出现动态技术,比如像php(1995年)、java(1995)、python(1991)语言开发的网站,但是nginx/apache服务器并不能直接运行php、java这样的文件。

  apache实现的方式是打补丁,但是nginx缺通过与第三方基于协议实现,即通过某种特定协议将客户端请求转发给第三方服务处理,第三方服务器会新建新的进程处理用户的请求,处理完成后返回数据给Nginx并回收进程,最后nginx在返回给客户端,那这个约定就是通用网关接口(common gateway interface,简称CGI),CGI(协议)是web服务器和外部应用程序之间的接口标准,是cgi程序和web服务器之间传递信息的标准化接口。

Nginx反向代理功能-实现FastCGI实战案例

2>.为什么FastCGI 

  CGI协议虽然解决了语言解析器和seb server之间通讯的问题,但是它的效率很低,因为web server每收到一个请求都会创建一个CGI进程,PHP解析器都会解析php.ini文件,初始化环境,请求结束的时候再关闭进程,对于每一个创建的CGI进程都会执行这些操作,所以效率很低,而FastCGI是用来提高CGI性能的,FastCGI每次处理完请求之后不会关闭掉进程,而是保留这个进程,使这个进程可以处理多个请求。这样的话每个请求都不用再重新创建一个进程了,大大提升了处理效率。

3>.什么是PHP-FPM

  PHP-FPM(FastCGI Process Manager:FastCGI进程管理器)是一个实现了Fastcgi的程序,并且提供进程管理的功能。进程包括master进程和worker进程。master进程只有一个,负责监听端口,接受来自webserver的请求。worker进程一般会有多个,每个进程中会嵌入一个PHP解析器,进行PHP代码的处理。

 

二.Nginx与php-fpm在同一服务器实战案例

1>.安装php相关软件环境

[root@node101.yinzhengjie.org.cn ~]# yum -y install php-fpm php-mysql 
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                                                                                                                 | 8.7 kB  00:00:00     
 * base: mirrors.tuna.tsinghua.edu.cn
 * epel: mirrors.tuna.tsinghua.edu.cn
 * extras: mirror.bit.edu.cn
 * updates: mirrors.tuna.tsinghua.edu.cn
base                                                                                                                                                 | 3.6 kB  00:00:00     
epel                                                                                                                                                 | 5.4 kB  00:00:00     
extras                                                                                                                                               | 2.9 kB  00:00:00     
updates                                                                                                                                              | 2.9 kB  00:00:00     
(1/3): epel/x86_64/group_gz                                                                                                                          |  90 kB  00:00:00     
(2/3): epel/x86_64/updateinfo                                                                                                                        | 1.0 MB  00:00:00     
(3/3): epel/x86_64/primary_db                                                                                                                        | 6.9 MB  00:00:00     
Resolving Dependencies
--> Running transaction check
---> Package php-fpm.x86_64 0:5.4.16-46.1.el7_7 will be installed
--> Processing Dependency: php-common(x86-64) = 5.4.16-46.1.el7_7 for package: php-fpm-5.4.16-46.1.el7_7.x86_64
---> Package php-mysql.x86_64 0:5.4.16-46.1.el7_7 will be installed
--> Processing Dependency: php-pdo(x86-64) = 5.4.16-46.1.el7_7 for package: php-mysql-5.4.16-46.1.el7_7.x86_64
--> Running transaction check
---> Package php-common.x86_64 0:5.4.16-46.1.el7_7 will be installed
--> Processing Dependency: libzip.so.2()(64bit) for package: php-common-5.4.16-46.1.el7_7.x86_64
---> Package php-pdo.x86_64 0:5.4.16-46.1.el7_7 will be installed
--> Running transaction check
---> Package libzip.x86_64 0:0.10.1-8.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

============================================================================================================================================================================
 Package                                  Arch                                 Version                                          Repository                             Size
============================================================================================================================================================================
Installing:
 php-fpm                                  x86_64                               5.4.16-46.1.el7_7                                updates                               1.4 M
 php-mysql                                x86_64                               5.4.16-46.1.el7_7                                updates                               101 k
Installing for dependencies:
 libzip                                   x86_64                               0.10.1-8.el7                                     base                                   48 k
 php-common                               x86_64                               5.4.16-46.1.el7_7                                updates                               565 k
 php-pdo                                  x86_64                               5.4.16-46.1.el7_7                                updates                                99 k

Transaction Summary
============================================================================================================================================================================
Install  2 Packages (+3 Dependent packages)

Total download size: 2.2 M
Installed size: 8.8 M
Downloading packages:
(1/5): libzip-0.10.1-8.el7.x86_64.rpm                                                                                                                |  48 kB  00:00:00     
(2/5): php-common-5.4.16-46.1.el7_7.x86_64.rpm                                                                                                       | 565 kB  00:00:00     
(3/5): php-mysql-5.4.16-46.1.el7_7.x86_64.rpm                                                                                                        | 101 kB  00:00:00     
php-pdo-5.4.16-46.1.el7_7.x86_ FAILED                                          
http://mirror.lzu.edu.cn/centos/7.7.1908/updates/x86_64/Packages/php-pdo-5.4.16-46.1.el7_7.x86_64.rpm: [Errno 14] curl#56 - "Recv failure: Connection reset by peer":-- ETA 
Trying other mirror.
(4/5): php-fpm-5.4.16-46.1.el7_7.x86_64.rpm                                                                                                          | 1.4 MB  00:00:06     
(5/5): php-pdo-5.4.16-46.1.el7_7.x86_64.rpm                                                                                                          |  99 kB  00:00:05     
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                       358 kB/s | 2.2 MB  00:00:06     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : libzip-0.10.1-8.el7.x86_64                                                                                                                               1/5 
  Installing : php-common-5.4.16-46.1.el7_7.x86_64                                                                                                                      2/5 
  Installing : php-pdo-5.4.16-46.1.el7_7.x86_64                                                                                                                         3/5 
  Installing : php-mysql-5.4.16-46.1.el7_7.x86_64                                                                                                                       4/5 
  Installing : php-fpm-5.4.16-46.1.el7_7.x86_64                                                                                                                         5/5 
  Verifying  : php-common-5.4.16-46.1.el7_7.x86_64                                                                                                                      1/5 
  Verifying  : libzip-0.10.1-8.el7.x86_64                                                                                                                               2/5 
  Verifying  : php-pdo-5.4.16-46.1.el7_7.x86_64                                                                                                                         3/5 
  Verifying  : php-mysql-5.4.16-46.1.el7_7.x86_64                                                                                                                       4/5 
  Verifying  : php-fpm-5.4.16-46.1.el7_7.x86_64                                                                                                                         5/5 

Installed:
  php-fpm.x86_64 0:5.4.16-46.1.el7_7                                                  php-mysql.x86_64 0:5.4.16-46.1.el7_7                                                 

Dependency Installed:
  libzip.x86_64 0:0.10.1-8.el7                        php-common.x86_64 0:5.4.16-46.1.el7_7                        php-pdo.x86_64 0:5.4.16-46.1.el7_7                       

Complete!
[root@node101.yinzhengjie.org.cn ~]# 
[root@node101.yinzhengjie.org.cn ~]# yum -y install php-fpm php-mysql

相关文章:

  • 2021-10-10
  • 2021-10-09
  • 2021-04-16
  • 2021-09-25
  • 2021-07-04
猜你喜欢
  • 2021-06-17
  • 2022-12-23
  • 2021-06-26
  • 2021-11-27
  • 2021-12-28
  • 2021-10-08
  • 2022-12-23
相关资源
相似解决方案