nginx--FastCGI

2024-05-08 01:04
文章标签 nginx fastcgi

本文主要是介绍nginx--FastCGI,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CGI

概念

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

通信方式

FastCGI

概念

CGI每收到一个请求都会创建一个CGI进程,初始化环境,请求结束的时候再关闭进程,效率非常的低,FastCGI每次处理完请求之后不会关闭掉进程,而是保留这个进程,使这个进程可以处理多个请求。大大提升了处理效率。

通信方式

PHP-FPM

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

基本参数配置

Module ngx_http_fastcgi_module

proxy_pass http://
fastcgi_pass  192.168.33.180:9000;转发请求到后端服务器,address为后端的fastcgi server的地址,可用位置:location

fastcgi_index name; fastcgi默认的主⻚页资源,示例:fastcgi_index index.php;

fastcgi_param parameter value [if_not_empty];

设置传递给FastCGI服务器的参数值,可以是文本,变量或组合,可用于将Nginx的内置变量量赋值给自定义key

fastcgi_param REMOTE_ADDR $remote_addr; 客户端源IP
fastcgi_param REMOTE_PORT $remote_port; 客户端源端口
fastcgi_param SERVER_ADDR $server_addr; 请求的服务器IP地址
fastcgi_param SERVER_PORT $server_port; 请求的服务器端⼝口
fastcgi_param SERVER_NAME $server_name; 请求的server name

 Nginx默认配置示例:
location ~ \.php$ {
         root html;
         fastcgi_pass 127.0.0.1:9000;
         fastcgi_index index.php;
         fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; 默认脚本路径
         include fastcgi_params;
}

缓存参数配置

定义

fastcgi_cache_path path [levels=levels] [use_temp_path=on|off]
keys_zone=name:size [inactive=time] [max_size=size] [manager_files=number]
[manager_sleep=time] [manager_threshold=time] [loader_files=number]
[loader_sleep=time] [loader_threshold=time] [purger=on|off]
[purger_files=number] [purger_sleep=time] [purger_threshold=time];
定义fastcgi的缓存;
path 缓存位置为磁盘上的文件系统路径
max_size=size 磁盘path路中用于缓存数据的缓存空间上限
levels=levels:十六进制的缓存目录的层级数量,以及每一级的目录数量,
levels=ONE:TWO:THREE,示例:leves=1:2:2
keys_zone=name:size 设置缓存名称及k/v映射的内存空间的名称及大小
inactive=time 缓存有效时间,默认10分钟,需要在指定时间满足fastcgi_cache_min_uses 次
数被视为活动缓存。

 调用

fastcgi_cache zone | off; 调用指定的缓存空间来缓存数据,可用位置:http, server, location
fastcgi_cache_key string;定义用作缓存项的key的字符串,

示例:fastcgi_cache_key  $request_uri;
fastcgi_cache_methods GET | HEAD | POST ...;为哪些请求方法使用缓存
fastcgi_cache_min_uses number;缓存空间中的缓存项在inactive定义的非活动时间内至少要被访问到此处所指定的次数方可被认作活动项
fastcgi_keep_conn on | off;收到后端服务器响应后,fastcgi服务器是否关闭连接,建议启⽤用长连接
fastcgi_cache_valid [code ...] time;不同的响应码各自的缓存时长
fastcgi_hide_header field; 隐藏响应头指定信息
fastcgi_pass_header field; 返回响应头指定信息,默认不会将Status、X-Accel-...返回

示例

Nginx与php-fpm在同一服务器

安装php-fpm

yum install php-fpm php-mysql -y

systemctl enable --now php-fpm

ps -ef | grep php-fpm

 php配置优化
vim /etc/php-fpm.conf
include=/etc/php-fpm.d/*.conf
pid = /run/php-fpm/php-fpm.pid
error_log = /var/log/php-fpm/error.log
daemonize = yes 是否后台启动
vim /etc/php-fpm.d/www.conf
listen = 127.0.0.1:9000 监听地址及IP
listen.allowed_clients = 127.0.0.1 允许客户端从哪个源IP地址访问,要允许所有行⾸加;注释即可
user = nginx php-fpm启动的用户和组,会涉及到后期⽂件的权限问题
group = nginx
pm = dynamic 动态模式进程管理
pm.max_children = 500 静态方式下开启的php-fpm进程数量,在动态方式下他限定php-fpm的最大进程数
pm.start_servers = 100 #动态模式下初始进程数,必须⼤于等于pm.min_spare_servers和小于等于pm.max_children的值。
pm.min_spare_servers = 100 #最小空闲进程数
pm.max_spare_servers = 200 #最大空闲进程数
pm.max_requests = 500000 #进程累计请求回收值,会回收并重新⽣成新的⼦进程
pm.status_path = /pm_status #状态访问URL
ping.path = /ping #ping访问动地址
ping.response = ping-pong #ping返回值
slowlog = /var/log/php-fpm/www-slow.log #慢日志路径
php_admin_value[error_log] = /var/log/php-fpm/www-error.log #错误日志
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files #phpsession保存⽅式及路径
php_value[session.save_path] = /var/lib/php/session #当时使⽤file保存session的文件路径
nginx配置
[root@localhost ~]# cat /apps/nginx/conf/conf.d/pc.conf
location ~ \.php$ {root /etc/nginx/php;fastcgi_pass   127.0.0.1:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;include        fastcgi_params;}

访问

 

这篇关于nginx--FastCGI的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/968884

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

Nginx实现端口映射的示例代码

《Nginx实现端口映射的示例代码》本文主要介绍了Nginx实现端口映射的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1. 找到nginx的部署路径2. 备份原来的配置文件3. 编辑nginx.conf文件4. 在

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

Nginx中配置使用非默认80端口进行服务的完整指南

《Nginx中配置使用非默认80端口进行服务的完整指南》在实际生产环境中,我们经常需要将Nginx配置在其他端口上运行,本文将详细介绍如何在Nginx中配置使用非默认端口进行服务,希望对大家有所帮助... 目录一、为什么需要使用非默认端口二、配置Nginx使用非默认端口的基本方法2.1 修改listen指令

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

Nginx添加内置模块过程

《Nginx添加内置模块过程》文章指导如何检查并添加Nginx的with-http_gzip_static模块:确认该模块未默认安装后,需下载同版本源码重新编译,备份替换原有二进制文件,最后重启服务验... 目录1、查看Nginx已编辑的模块2、Nginx官网查看内置模块3、停止Nginx服务4、Nginx

通过配置nginx访问服务器静态资源的过程

《通过配置nginx访问服务器静态资源的过程》文章介绍了图片存储路径设置、Nginx服务器配置及通过http://192.168.206.170:8007/a.png访问图片的方法,涵盖图片管理与服务... 目录1.图片存储路径2.nginx配置3.访问图片方式总结1.图片存储路径2.nginx配置