Nginx 0.8.53 FastCGI参数详解

Nginx 0.8.53 FastCGI参数详解来源地址:http://blog.csdn.net/eric1012/article/details/6075460以下配置都是基于Nginx0.8.53版本做解析。资源来源于个人翻译,网上摘录,如有错误信息地方,请提醒修正。本人已经制作PDF版本,可以直接下载查阅。 http://blogimg.chinaunix.net/blog/upfile2/101214

大家好,又见面了,我是你们的朋友全栈君。

来源地址:http://blog.csdn.net/eric1012/article/details/6075460

以下配置都是基于Nginx 0.8.53版本做解析。

资源来源于个人翻译,网上摘录,如有错误信息地方,请提醒修正。

本人已经制作PDF版本,可以直接下载查阅。

 

http://blogimg.chinaunix.net/blog/upfile2/101214143816.pdf

 

Fastcgi_param

指定一些传递到FastCGI服务器的参数

如果PHP在编译时带有–enable-force-cgi-redirect,则必须传递值为200的REDIRECT_STATUS参数:

fastcgi_param  REDIRECT_STATUS  200; 

fastcgi_param  QUERY_STRING       $query_string; 

fastcgi_param  REQUEST_METHOD     $request_method;

fastcgi_param  CONTENT_TYPE       $content_type;

fastcgi_param  CONTENT_LENGTH     $content_length; 

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;

fastcgi_param  REQUEST_URI        $request_uri;

fastcgi_param  DOCUMENT_URI       $document_uri;

fastcgi_param  DOCUMENT_ROOT      $document_root;

fastcgi_param  SERVER_PROTOCOL    $server_protocol;

 

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;

fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;

fastcgi_param  REMOTE_PORT        $remote_port;

fastcgi_param  SERVER_ADDR        $server_addr;

fastcgi_param  SERVER_PORT        $server_port;

fastcgi_param  SERVER_NAME        $server_name;

 

fastcgi_pass

指定FastCGI服务器监听端口与地址,可以是本机或者其它:    

fastcgi_pass   localhost:9000;    //  如果是php  这里对应的就是 php-fpm 的端口

使用Unix socket:

fastcgi_pass   unix:/tmp/fastcgi.socket;

 

fastcgi_buffers 16 16k;

默认值:fastcgi_buffers 8 4k/8k; 

fastcgi_buffer_size 16k;

默认值:fastcgi_buffer_size 4k/8k ;

指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答,如上所示,如果一个php脚本所产生的页面大小为256k,则会为其分配16个16k的缓冲区来缓存,如果大于256k,增大于256k的部分会缓存到fastcgi_temp指定的路径中,当然这对服务器负载来说是不明智的方案,因为内存中处理数据速度要快于硬盘,通常这个值的设置应该选择一个你的站点中的php脚本所产生的页面大小的中间值,比如你的站点大部分脚本所产生的页面大小为256k就可以把这个值设置为16 16k,或者4 64k 或者64 4k,但很显然,后两种并不是好的设置方法,因为如果产生的页面只有32k,如果用4 64k它会分配1个64k的缓冲区去缓存,而如果使用64 4k它会分配8个4k的缓冲区去缓存,而如果使用16 16k则它会分配2个16k去缓存页面,这样看起来似乎更加合理。

 

fastcgi_cache NAME

默认值:off 

设置共享内存中的名称和是否开启cache

建议:

 

 

fastcgi_read_timeout

等待后端应用程序返回给nginx的最长时间,如果超过时间nginx没有收到信息,会报502,504的错误。

 

fastcgi_connect_timeout

FastCGI的指令集与服务器的连接超时时间。官方建议,这个值不能超过75秒。但是很多如果后端应用程序运行时间会很长的,都设置值远远超过75,300-600都有。

但是数值应该不低于fastcgi_send_timeout和fastcgi_read_timeout,不然其他设置就无效了

 

fastcgi_send_timeout

等待一个FastCGI进程发送数据的最长时间,如果是在长时间运行后端应用程序,但是一直每一输出的情况,需要提高此值。

 

fastcgi_pass_head NAME

默认情况下nginx不会将来自FastCGI服务器的”Status”和”X-Accel-…“头传送到客户端,这个参数可以强制定义发送至客户端。

 

fastcgi_hide_header

默认情况下nginx不会将来自FastCGI服务器的”Status”和”X-Accel-…“头传送到客户端,这个参数也可以隐藏某些其它的头。

建议:不做修改

 

fastcgi_ignore_headers

这个指令禁止处理一些FastCGI服务器应答的头部字段,比如可以指定像”X-Accel-Redirect”, “X-Accel-Expires”, “Expires”或”Cache-Control”等

 

fastcgi_redirect_error(old)

fastcgi_intercept_error(new)

默认值:fastcgi_intercept_errors off

这个指令指定是否传递4xx和5xx错误信息到客户端,或者允许nginx使用error_page处理错误信息。

你必须明确的在error_page中指定处理方法使这个参数有效,正如Igor所说“如果没有适当的处理方法,nginx不会拦截一个错误,这个错误不会显示自己的默认页面,这里允许通过某些方法拦截错误。

 

fastcgi_split_path_info

用于将请求页面与发送参数分离的标准定义。0.7.31以上版本有效。

eg.

location ~ ^.+/.php { 

 (…)

 fastcgi_split_path_info ^(.+/.php)(.*)$; #分割的标准,可以使用正则表达式

 fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name;

 fastcgi_param PATH_INFO $fastcgi_path_info;

 fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

 (…)

}

请求”/show.php/article/0001”的参数SCRIPT_FILENAME将设置为”/path/to/php/show.php”,参数PATH_INFO为”/article/0001”。

 

fastcgi_index

定义首页设置文件。

如果URI以斜线结尾,文件名将追加到URI后面,这个值将存储在变量$fastcgi_script_name中。

 

fastcgi_ignore_client_abort

如果当前连接请求FastCGI服务器失败,为防止其与nginx服务器断开连接,可以用这个指令。

用来决定忽略用户取消的请求。

建议不做修改.

 

fastcgi_max_temp_file_size

根据源代码关闭FastCGI缓冲,默认是关闭,开启将增大I/O的读写量,而且消耗内存大量资源。

 

fastcgi_cache_methods

在缓存FastCGI请求中允许哪些http方法

默认是指定GET,HEAD。而且无法禁止。可以不做任何修改。

 

fastcgi_cache_key

设置缓存的关键字,可以使用默认

eg.fastcgi_cache_key localhost:9000$request_uri;

 

fastcgi_cache_valid

为指定的http返回代码指定缓存时间

eg.

fastcgi_cache_valid  200 302  10m;

fastcgi_cache_valid  404      1m;

 

fastcgi_next_upstream

语法:fastcgi_next_upstream error|timeout|invalid_header|http_500|http_503|http_404|off

指令指定哪种情况请求将被转发到下一个FastCGI服务器

·error — 传送中的请求或者正在读取应答头的请求在连接服务器的时候发生错误。

·timeout — 传送中的请求或者正在读取应答头的请求在连接服务器的时候超时。

·invalid_header — 服务器返回空的或者无效的应答。

·http_500 — 服务器返回500应答代码。

·http_503 — 服务器返回503应答代码。

·http_404 — 服务器返回404应答代码。

·off — 禁止请求传送到下一个FastCGI服务器。

 

fastcgi_cache_path

这个指令指定FastCGI缓存的路径以及其他的一些参数,所有的数据以文件的形式存储,缓存的关键字(key)和文件名为代理的url计算出的MD5值。Level参数设置缓存目录的目录分级以及子目录的数量:

eg.fastcgi_cache_path  /data/nginx/cache  levels=1:2 keys_zone=one:10m inactive=5min;

 

最好使用在fastcgi_temp_path和fastcgi_cache_path指示两个参数相同的文件系统

 

fastcgi_cache_min_uses

指令指定了在inactive参数值时间内经过多少次请求的相同URL将被缓存。

 

fastcgi_cache_use_stale

在某些网关错误、超时的情况下,nginx都将传送过期的缓存数据.默认是关闭,可以不做修改。

 

 

fastcgi_store

语法:fastcgi_store [on | off | path] 

默认值:fastcgi_store off 

使用字段:http, server, location 

制定了存储前端文件的路径,参数on指定了将使用root和alias指令相同的路径,off禁止存储,此外,参数中可以使用变量使路径名更明确:

fastcgi_store   /data/www$original_uri;

应答中的”Last-Modified”头将设置文件的最后修改时间,为了使这些文件更加安全,可以将其在一个目录中存为临时文件,使用fastcgi_temp_path指令。

这个指令可以用在为那些不是经常改变的后端动态输出创建本地拷贝的过程中。如:

location /images/ {

  root                 /data/www;

  error_page           404 = /fetch$uri;

}

 

location /fetch {

  internal;

 

  fastcgi_pass           fastcgi://backend;

  fastcgi_store          on;

  fastcgi_store_access   user:rw  group:rw  all:r;

  fastcgi_temp_path      /data/temp;

 

  alias                  /data/www;

}

fastcgi_store并不是缓存,某些需求下它更像是一个镜像。

 

fastcgi_store_access

 

语法:fastcgi_store_access users:permissions [users:permission …] 

默认值:fastcgi_store_access user:rw 

使用字段:http, server, location 

这个参数指定创建文件或目录的权限,例如:

fastcgi_store_access  user:rw  group:rw  all:r;

如果要指定一个组的人的相关权限,可以不写用户,如:

fastcgi_store_access  group:rw  all:r;

 

fastcgi_bind

语法:fastcgi_bind address

默认值:none

使用字段:http, server, location

可用版本:大于0.8.22

示例:

fastcgi_bind  192.168.1.1;

指令在调用connect()函数之前将解析每个上游socket到一个本地地址,可以使用在主机拥有多个网卡接口或别名,但是你只允许到外的连接来自指定的网卡或者地址的情况下。如果是多网卡,可以只指定访问一个IP,其他IP无法访问。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157571.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月11日 下午8:46
下一篇 2022年7月11日 下午8:46


相关推荐

  • Stata安装外部命令——以Winsor2缩尾命令为例

    Stata安装外部命令——以Winsor2缩尾命令为例说明计量经济学中经常要对数据进行缩尾处理 winsor 是 Stata 中常用的缩尾命令 需要安装才能调用 安装 winsor2 方法一 sscinstallwi 方法二 finditwinsor 的使用 winsor2var cut 199 replacePS 表示对数据进行上下 1 缩尾处理 直接替换 不产生新变量

    2026年3月26日
    8
  • 普通最小二乘法、加权最小二乘法、广义最小二乘法

    普通最小二乘法、加权最小二乘法、广义最小二乘法所谓回归分析实际上就是根据统计数据建立一个方程 用这个方程来描述不同变量之间的关系 而这个关系又无法做到想像函数关系那样准确 因为即使你重复全部控制条件 结果也还有区别 这时通过让回归方程计算值和试验点结果间差值的平方和最小来建立 nbsp 回归方程的办法就是最小二乘法 二乘的意思就是平方 最小二乘就是指回归方程计算值和实验值差的平方和最小 首先普通最小二乘法是作为回归来使用 将预测值

    2026年3月26日
    2
  • 谷歌 Nano Banana:通用模型如何制霸图像一致性

    谷歌 Nano Banana:通用模型如何制霸图像一致性

    2026年3月13日
    1
  • 机器学习和深度学习的区别

    机器学习和深度学习的区别Python 微信订餐小程序课程视频 https edu csdn net course detail 36074Python 实战量化交易理财系统 https edu csdn net course detail 35475 终于考上人工智能的研究僧啦 不知道机器学习和深度学习有啥区别 感觉一切都是深度学习挖槽 听说学长已经调了 10 个月的参数准备发有 2000 亿参数的 T9 开天霹雳模型 我要调参发 T10 准备拿个 BestPaper 现在搞传统机器学习相关的研究论文确实占比不太高 有的人吐槽深度学

    2026年3月19日
    2
  • Jenkins详细教程

    Jenkins详细教程大纲  1.背景  在实际开发中,我们经常要一边开发一边测试,当然这里说的测试并不是程序员对自己代码的单元测试,而是同组程序员将代码提交后,由测试人员测试;  或者前后端分离后,经常会修改接口,然后重新部署;  这些情况都会涉及到频繁的打包部署;  手动打包常规步骤:  1.提交代码  2.问一下同组小伙伴有没有要提交的代码  3.拉取代码并打包(war包,或者jar包)  4.上传到Linux服务器  5.查看当前程序是否在运行  6.关闭当前程序  .

    2022年5月15日
    68
  • Eric6使用介绍(详细)

    Eric6使用介绍(详细)Eric6 是 Python 编程语言的 IDE 程序 功能之强大 绝不输于 Python 平台下的任何 IDE 程序 占用内存低运行速度快足以令 Eric6 藐视群雄 最可贵的是与 PyQt5 结合的更是天衣无缝 简直就是开发 GUI 程序的绝配 PyQt5 是赖以 Python 编程语言的外部 GUI 开发语言 其夯实的底层基础与强大的可视化界面设计让 PyQt5 成为 Python 语言 GUI 开发的佼佼者 更新速度之快 开发 GUI 程序的速度之快 可以说其它 GUI 开发语言所望尘莫及 虽说 Eric6 与 PyQt5 结合使用可快速开发 GUI 程序 但是

    2026年3月18日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号