zoukankan      html  css  js  c++  java
  • nginx配置:支持phpfastcgi,nginx和phpcgi通信,部分nginx常量解释

    支持phpfastcgi的配置如下:

     server {

            listen       8000;

            server_name  localhost;

            root F:/home/projects/test;

            index        index.php;

            location / {

               index  index.php; ##可以有多个,空格隔开

            }

            location ~ \.php$ {

                fastcgi_pass   127.0.0.1:9000;

                fastcgi_index  index.php;

                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

                include        fastcgi_params;

            }

    }

    解释说明:

    1、location ~ \.php$ 匹配到php文件就进行fastcgi操作

    2、fastcgi_pass   127.0.0.1:9000;指明nginx与fastcgi交互的id和端口号,也就是fastcgi监听的端口

    3、fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;这里声明了一个fastcgi参数,参数名称为SCRIPT_FILENAME(对,也就是php中$_SERVER['SCRIPT_FILENAME']的值),这个参数表明目标进程要执行哪个php脚本$document_root,$fastcgi_script_name都是nginx的常量,稍后给解释。此处声明的参数会通信给php-cgi,php-cgi会进行一些php的常量超级变量的初始化,例如:$_SERVER['REQUEST_URI'],$_SERVER['SCRIPT_FILENAME'],$_SERVER['QUERY_STRING']……。

    4、include        fastcgi_params;这里是包含所有nginx常量,传递给php-cgi。

      当然这里可以—》

      fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

      fastcgi_param  REQUEST_URI $request_uri;

      fastcgi_param  QUERY_STRING $query_string;

      ......

     

    部分nginx常量解释,以http://127.0.0.1:8000/?test=123&test2=abc为例子:

    $args    #这个变量等于请求行中(GET请求)的参数,test=123&test2=abc;

    $content_length #请求头中的Content-length字段;

    $content_type  #请求头中的Content-Type字段;

    $document_root #当前请求在root指令中指定的值,文件的物理root路径,F:/home/projects/test;

    $document_uri  #同$uri;

    $uri    #不带请求参数的当前URI,$uri不包含主机名,本例为"/"。该值有可能和$request_uri 不一致。$request_uri是浏览器发过来的值,该值不会被改变。该值有可能是rewrite后的值。例如做了internal redirects后。好多框架、伪静态都用到rewrite。$_SERVER['REQUEST_URI']往往是一些框架初始化关键,$request_uri的不可变性保证了这一点。

    $host  #请求主机头字段,否则为服务器名称。127.0.0.1

    $query_string  #同$args;

    $request_method #GET或POST;

    $remote_addr    #客户端的IP地址;

    $remote_port    #客户端的端口;

    $server_addr    #服务器地址 127.0.0.1

    $server_name    #服务器名称,localhost;

    $server_port    #8000;

    $request_filename #当前请求的物理文件的名称,本例为F:/home/projects/test/index.php。此值可以因重定向改变。

    $request_uri     #包含请求参数的原始URI,不包含主机名,由客户端请求决定,不能修改。”/?test=123&test2=abc”。

     .........

  • 相关阅读:
    vscode开发环境安装配置-连载【2】-企业级系统开发实战连载系列 -技术栈(vue、element-ui、qt、c++、sqlite)
    nodejs开发环境安装-连载【1】-企业级系统开发实战连载系列 -技术栈(vue、element-ui、qt、c++、sqlite)
    vs 2015 菜单重复的问题解决方法
    ecshop代码详解之init.php
    前端jquery实现点击图片弹出大图层(且滚动鼠标滑轮图片缩放)
    thinkPHP中省市级联下拉列表
    mysql函数date_format统计刷选按年月日统计的数据
    jQuery插件实现select下拉框左右选择_交换内容(multiselect2side)
    php代码生成二维码
    ASP.NET无效的视图
  • 原文地址:https://www.cnblogs.com/tdkj/p/3440056.html
Copyright © 2011-2022 走看看