nginx fastcgi_param的理解

FastCGI的工作原理是:  

        1、Web Server 启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module,nginx 下 fastcgi 与服务器是分离的,fastcgi 可有lighttpd 下的 spawan-cgi或者 php-fpm 来管理));

  2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程 (在任务管理器中可见多个php-cgi进程)并等待来自Web Server的连接。
  3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
  4、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在WebServer中)的下一个连接。 在正常的CGI模式中,php-cgi进程在此便退出了。

fastcgi_param 详解



  1. fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;#脚本文件请求的路径  
  2. fastcgi_param  QUERY_STRING       $query_string; #请求的参数;如?app=123  
  3. fastcgi_param  REQUEST_METHOD     $request_method; #请求的动作(GET,POST)  
  4. fastcgi_param  CONTENT_TYPE       $content_type; #请求头中的Content-Type字段  
  5. fastcgi_param  CONTENT_LENGTH     $content_length; #请求头中的Content-length字段。  
  6.   
  7. fastcgi_param  SCRIPT_NAME        $fastcgi_script_name; #脚本名称   
  8. fastcgi_param  REQUEST_URI        $request_uri; #请求的地址不带参数  
  9. fastcgi_param  DOCUMENT_URI       $document_uri; #与$uri相同。   
  10. fastcgi_param  DOCUMENT_ROOT      $document_root; #网站的根目录。在server配置中root指令中指定的值   
  11. fastcgi_param  SERVER_PROTOCOL    $server_protocol; #请求使用的协议,通常是HTTP/1.0或HTTP/1.1。    
  12.   
  13. fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;#cgi 版本  
  14. fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;#nginx 版本号,可修改、隐藏  
  15.   
  16. fastcgi_param  REMOTE_ADDR        $remote_addr; #客户端IP  
  17. fastcgi_param  REMOTE_PORT        $remote_port; #客户端端口  
  18. fastcgi_param  SERVER_ADDR        $server_addr; #服务器IP地址  
  19. fastcgi_param  SERVER_PORT        $server_port; #服务器端口  
  20. fastcgi_param  SERVER_NAME        $server_name; #服务器名,域名在server配置中指定的server_name  
  21.   
  22. #fastcgi_param  PATH_INFO           $path_info;#可自定义变量  
  23.   
  24. # PHP only, required if PHP was built with --enable-force-cgi-redirect  
  25. #fastcgi_param  REDIRECT_STATUS    200;  
  26.   
  27. 在php可打印出上面的服务环境变量  
  28. 如:echo $_SERVER['REMOTE_ADDR']  

nginx的fastcgi模块提供的命令

fastcgi_pass

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

  1. fastcgi_pass localhost: 9000;
  2. fastcgi_pass unix: /tmp/fastcgi.socket;

这里的设置需要和fastcgi自身配置的listen_address做相应地对应。

比如上面那个例子,listen_addree就应该这么配置:

<value name="listen_address">/tmp/fastcgi.socket</value>

fastcgi_param

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

比如你想要设置当前的机器环境,可以使用fastcgi_param ENV test;来设置。

对于php来说,最少需要设置的变量有:

  1. fastcgi_param SCRIPT_FILENAME /home/www/scripts/php $fastcgi_script_name;
  2. fastcgi_param QUERY_STRING $query_string;

对于POST请求,还需要设置:
fastcgi_param REQUEST_METHOD content_type;
fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param还可以使用if_not_empty进行设置。意思是如果value非空才进行设置。

fastcgi_param HTTPS   $https if_not_empty;

fastcgi_index

这个命令设置了fastcgi默认使用的脚本。就是当SCRIPT_FILENAME没有命中脚本的时候,使用的就是fastcgi_index设置的脚本。

  1. 以上三个命令能组成最基本的fastcgi设置了
  2. location / {
  3. fastcgi_pass localhost: 9000;
  4. fastcgi_index index.php;
  5. fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
  6. fastcgi_param QUERY_STRING $query_string;
  7. fastcgi_param REQUEST_METHOD $request_method;
  8. fastcgi_param CONTENT_TYPE $content_type;
  9. fastcgi_param CONTENT_LENGTH $content_length;
  10. }

fastcgi_hide_header,fastcgi_ignore_headers,fastcgi_pass_header

fastcgi_cache

这个命令是开启fastcgi的文件缓存。这个缓存可以将动态的页面存为静态的。以提供为加速或者容灾使用。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值