Nginx 之 fastcgi 常用参数详解

这篇具有很好参考价值的文章主要介绍了Nginx 之 fastcgi 常用参数详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

fastcgi 是什么

这个在上篇文章已经提到过了一个 PHP 请求的执行过程,这里在讲一次

早期的 webserver 只处理 html 等静态文件,但是随着技术的发展,出现了像 php 等动态语言。为了解决不同的语言解释器(如 php、python 解释器)与 webserver 的通信,于是出现了 cgi协议。只要你按照 cgi协议去编写程序,就能实现语言解释器与 webwerver 的通信。

但是,webserver每收到一个请求,都会去 fork 一个 cgi 进程,请求结束再kill掉这个进程。这样有10000个请求,就需要fork、kill php-cgi进程10000次。这样的话很浪费资源,于是,出现了 cgi 的改良版本,fast-cgifast-cgi 每次处理完请求后,不会 kill 掉这个进程,而是保留这个进程,使这个进程可以一次处理多个请求。这样每次就不用重新 fork 一个进程了,大大提高了效率。

fastcgi 常用参数

具体参数详情可参考官网:Module ngx_http_fastcgi_module

以下参数都在nginx的配置文件中配置,配置范围:http, server, location。

1、fastcgi_pass

这个命令是指定将http代理到哪个fastcgi服务端接口。fastcgi_pass后面是填写fastcgi服务端地址的,这个地址可以是域地址,也可以是Uninx-域套接字。

fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;

2、fastcgi_param

这个命令是设置 fastcgi 请求中的参数,具体设置的东西可以在 PHP 的 $_SERVER 中获取到。参考最后的店fastcgi_param参数配置。

3、fastcgi_index

fastcgi默认的主页资源,示例:fastcgi_index index.php;这个功能和index index.html功能一样。当SCRIPT_FILENAME没有命中脚本的时候,使用的就是fastcgi_index设置的脚本。

  fastcgi_index  index.php;

4、fastcgi_connect_timeout

nginx与后端fastcgi server连接超时时间。

  fastcgi_connect_timeout 60s;

5、fastcgi_send_timeout

指定nginx向后端传送请求超时时间(指已完成两次握手后向fastcgi传送请求超时时间)。

 fastcgi_send_timeout 60s;

6、fastcgi_read_timeout

指定nginx接受后端fastcgi响应请求超时时间 (指已完成两次握手后nginx接受fastcgi响应请求超时时间)。

 fastcgi_send_timeout 60s;

7、fastcgi_buffer_size

指定nginx读取fastcgi响应第一部分需要用多大的缓冲区,这个值表示将使用一个64kb的缓冲区响应第一部分应答(应答头)可以设置为fastcgi_buffers缓存区大小。

fastcgi_buffer_size 4k; # 单位为k,一般为4的整数倍

8、fastcgi_buffers

指nginx需要用多大的缓冲区缓冲fastcgi的应答请求(整个应答),如果一个php脚本所产生的页面大小为256kb,那么会分配4个64kb缓冲区来缓存,如果页面大于256kb,那么大于256kb的部分会缓存到fastcgi_temp指定的路径中,但是因为内存中数据处理远快于磁盘, 所以这个值应该为站点中php所产生的页面大小的中间值, 如果站点大部分php脚本产生的页面为:256kb, 那么可以设置成成"8 16k 4 64k"。

fastcgi_buffers 8 4k;  # 单位为k,一般为4的整数倍

9、fastcgi_busy_buffers_size

整个数据请求需要多大的缓存区,建议设置为fastcgi_buffers值的两倍。

fastcgi_busy_buffers 8k; # 单位为K,一般为fastcgi_buffers值的2倍

10、fastcgi_temp_file_write_size

写入缓存文件使用多大的数据块,默认值是fastcgi_buffer值的2倍。

fastcgi_temp_file_write_size 8k; # 单位为K,一般为fastcgi_buffers值的2倍

11、fastcgi_cache_path

定义fastcgi缓存的路径及其他设置。

fastcgi_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];

12、fastcgi_cache

开启fastcgi_cache并为其定义一个名称,可以防止nginx 502错误,降低cpu负载,不过也会引起其他问题,根据需求来选择。

fastcgi_cache off;

13、fastcgi_cache_valid

为指定的应答代码指定缓存时间。

fastcgi_cache_valid 200 302 1h; # 对于状态码为200 302的网页缓存1小时
fastcgi_cache_valid any 1m; # 其他页面缓存1分钟

14、fastcgi_cache_key

以某个值为key,Nginx会取这个key的md5作为缓存文件 如果设置了缓存哈希目录,Nginx会从后往前取相应的位数做为目录。

fastcgi_cache_key "requestmethod://requestmethod://host$request_uri";

15、fastcgi_cache_min_uses

URL至少经过多少次请求将被缓存。

fastcgi_cache_min_uses 1;

16、fastcgi_cache_use_stale

对一些错误提示code,nginx会使用到fast_cache缓存。

fastcgi_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_503 |http_403 | http_404 | off ...;

fastcgi_param参数配置

一般在nginx.conf文件同级有一个 fastcgi.conf 配置文件如下:文章来源地址https://www.toymoban.com/news/detail-806594.html

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;# 脚本文件请求的路径
fastcgi_param  QUERY_STRING       $query_string; # 请求参数 
fastcgi_param  REQUEST_METHOD     $request_method;# 请求方法
fastcgi_param  CONTENT_TYPE       $content_type; # 请求时正文的格式,对应Content-Type字段
fastcgi_param  CONTENT_LENGTH     $content_length; # 请求头正文长度,对应Content-length字段

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;# 脚本名称
fastcgi_param  REQUEST_URI        $request_uri; # 请求地址不带参数  
fastcgi_param  DOCUMENT_URI       $document_uri; # 与$uri相同
fastcgi_param  DOCUMENT_ROOT      $document_root;# 网站的根目录。配置文件中root值
fastcgi_param  SERVER_PROTOCOL    $server_protocol;# 请求使用的协议,如:HTTP/1.1   
fastcgi_param  REQUEST_SCHEME     $scheme; # 获取http协议
fastcgi_param  HTTPS              $https if_not_empty; # value非空才进行设置

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1; # cgi 版本  
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version; # nginx 版本号,可修改、隐藏 

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配置中指定的server_name  

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;
#fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
fastcgi_param PHP_ADMIN_VALUE "open_basedir=/home/wwwroot/:/tmp/:/proc/";

到了这里,关于Nginx 之 fastcgi 常用参数详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

    资源文件识别 语言识别 框架识别 index.php 开源的php Window/Linux+nginx+php+mysql index.py 开源的python Window/Linux+apache+python+mysql index.jsp 商业java Window/Linux+tomcat+JDK+Oracle index.asp 商业C# Window+iis+asp.net+sql-server/oracle/mog0db 在vmware安装centos7,关闭防火墙和selinux systemctl stop firewalld setenforce 0 临

    2023年04月09日
    浏览(45)
  • PHP CGI、FastCGI、PHP-FPM、PHP-CGI 区别

    PHP CGI、FastCGI、PHP-FPM、PHP-CGI 是不同的PHP执行方式和处理程序。它们有以下区别: PHP CGI (Common Gateway Interface):PHP CGI是一种通过CGI协议与Web服务器通信的PHP执行方式。在每次请求时,Web服务器会将请求传递给PHP解释器,PHP解释器会解析并执行PHP脚本,并将结果返回给Web服务器

    2024年02月11日
    浏览(46)
  • FastCGI sent in stderr: "PHP message: PHP Fatal error

    服务器php7.2卸载安装7.4之后,打开网站一直无法访问 ,查看nginx错误日志发现一直报这个错误: 2023/02/23 11:12:55 [error] 4735#0: *21 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught ReflectionException: Class translator does not exist in /www/wwwroot/dev_admin/vendor/laravel/framework/src/Illuminate/Container/Cont

    2023年04月14日
    浏览(54)
  • 【Nginx20】Nginx学习:FastCGI模块(二)缓存配置

    通过上篇文章的学习,普通的 PHP 与 Nginx 的连接就已经没啥大问题了。一般的网站直接那套配置就够了,这也是 Nginx 非常友好的一面。很多在默认的配置文件中注释掉的内容,只要打开就是可以直接使用的。不过,FastCGI 可不是一个小模块,还有很多的配置指令,要想深入,

    2024年02月11日
    浏览(36)
  • 【Nginx22】Nginx学习:FastCGI模块(四)错误处理及其它

    FastCGI 最后一篇,我们将学习完剩下的所有配置指令。在这里,错误处理还是单独拿出来成为一个小节了,而剩下的内容都放到其它中进行学习。不要感觉是其它的就没用了,有些配置指令还是非常重要的哦,或许正好你现在的项目就能用上呢。 今天学习的内容都是可以设置

    2024年02月10日
    浏览(36)
  • 利用Fastcgi+PHP-FPM非授权访问实现代码执行

    目录 Fastcgi Record Fastcgi Type PHP-FPM(FastCGI进程管理器) Nginx(IIS7)解析漏洞 security.limit_extensions配置 漏洞演示 今天要和大家分享的是利用Fastcgi和PHP_FPM实现未授权访问实现代码执行,首先我们需要知道cgi、fastcgi和php-fpm这些都是什么。 什么是CGI CGI全称是“公共网关接口”(Co

    2024年01月21日
    浏览(50)
  • WordPress速度优化-Nginx fastcgi_cache缓存加速

    高并发网站架构的核心原则其实就一句话“把所有的用户访问请求都尽量往前推“,即:能缓存在用户电脑本地的,就不要让他去访问CDN。 能缓存CDN服务器上的,就不要让CDN去访问源(静态服务器)了。能访问静态服务器的,就不要去访问动态服务器。以此类推:能不访问数

    2023年04月23日
    浏览(42)
  • Linux网站搭建(nginx+php+mysql)

    目录 nginx 安装nginx服务器依赖环境 源码安装和yum安装的区别 源码安装 源码安装三步走: php 下载 安装所有扩展:(php运行所需要的环境) 编辑/etc/php.ini 开启php-fpm 在html下创建index.php,看一下是否可以网页中访问得到它 编辑nginx配置文件 重启服务 mysql 安装mysql mysql的使用

    2024年02月01日
    浏览(52)
  • 函数的参数传递和返回值-PHP8知识详解

    本文学习的是《php8知识详解》中的《函数的参数传递和返回值》。主要包括:向函数传递参数值、向函数传递参数引用、函数的返回值。 1、向函数传递参数值 函数是一段封闭的程序,有时候,程序员需要向函数传递一些数据进行操作。可以接受传入参数的函数定义形式如下

    2024年02月11日
    浏览(41)
  • @KafkaListener注解详解(一)| 常用参数详解

    @KafkaListener 注解提供了许多可配置的参数,以便更灵活地定制 Kafka 消息监听器的行为。 描述: 指定监听的 Kafka 主题,可以是一个字符串数组。这是最基本的参数,它定义了监听器将从哪个或哪些主题接收消息。 例子: @KafkaListener(topics = \\\"my-topic\\\") 描述: 指定 Kafka 消费者组

    2024年02月04日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包