`
xieye
  • 浏览: 822574 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

nginx配置文件中预定义全局变量的解说

阅读更多
-- nginx内置全局变量。

nginx内置了一些全局变量,本文挑选了几个最重要的进行描述。

$request
类似 GET /2.php?a=4 HTTP/1.1
包含了请求方法,url,协议。

$document_root
当前请求在 root 指令中指定的值,或alias指令的配置值

$args = $query_string
含义:查询字符串
样例参考值: a=b&c=d&e=f
说明: 相当于PHP中的服务器参数: $_SERVER[“QUERY_STRING”]
请求行中的参数字符串,$args是nginx的写法。

$is_args
含义:如果$args有值,则为?,否则为空字符串
所以,事实上这个变量大多是为了拼接url使用的。很有用的变量。

$request_uri
完整的原始请求行(带参数)。
包含请求参数的原始 URI, 不包含主机名, 如: ”/foo/bar.php?arg=baz”.

$uri = $document_uri
当前请求规范化以后的URI。
路径匹配在URI规范化以后进行。所谓规范化,就是先将URI中形如“%XX”的编码字符进行解码,
再解析URI中的相对路径“.”和“..”部分, 另外还可能会压缩相邻的两个或多个斜线成为一个斜线。
变量$uri的值可能随请求的处理过程而改变。 比如,当进行内部跳转时
例如:不带请求参数的当前 URI, $uri 不包含主机名, 如 "/foo/bar.html".

$request_filename
当前请求的文件路径, 由 root 或 alias 指令与 URI 请求生成.
含义:当前执行脚本的绝对路径,
例如:/var/www/project/1.php
但是,本文最后的例子表明,这不一定是个标准文件名
fastcgi会做进一步处理,生成script_filename

==================================================
$script_filename
这是fastcgi的参数,而不是nginx的变量。
含义:当前执行脚本的绝对路径,
例如:/var/www/project/1.php
相当于PHP中的服务器参数: $_SERVER[“SCRIPT_FILENAME”]

$path_info
这是fastcgi的参数,而不是nginx的变量。
含义:请求中真实脚本名称之后,查询语句(query string)之前的路径信息
例如当前 URL 为 http://www.example.com/php/user.php/some/stuff?foo=bar,
那么 PATH_INFO 将包含 /some/stuff。
说明: 相当于PHP中的服务器参数: $_REQUEST[“PATH_INFO”]

根据观察,path_info和script_filename 其实是fastcgi的参数,且fastcgi的参数会全部传递给php的$_SERVER变量。
但是fastcgi的参数,有些需要在nginx的配置文件中设置,才有值。

在nginx的配置目录下有个名为 fastcgi_params 的文件,里面内容如下:
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  REQUEST_SCHEME     $scheme;
fastcgi_param  HTTPS              $https if_not_empty;

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;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;


其实,fastcgi的所有参数都会在php的$_SERVER中有,当然有键不代表有值。
但键确实都有,
上面这个名为 fastcgi_params 的文件,最右边一列就是nginx 的内置全局变量 的一部分。
nginx 传给 fastcgi,fastcgi 传给 php 的 $_SERVER 变量。

==========================================================
实例:目录如下
/var/www/myapp_code1,这是root,
/var/www/myapp_code1/index.php
/var/www/myapp_code1/path/2.php
总共就两个文件,看看实例:
http://www.d1.com/path/2.php/aa/bb?a=4

(1)document_root=[/var/www/myapp_code1] 
(2)request_uri=[/path/2.php/aa/bb?a=4]                   
(3)uri=[/path/2.php/aa/bb] 
(4)request_filename=[/var/www/myapp_code1/path/2.php/aa/bb] 
(5)args=[a=4]

而php的 $_SERVER 变量
'SCRIPT_FILENAME' => '/var/www/myapp_code1/path/2.php',
'REQUEST_URI' => '/path/2.php/aa/bb?a=4',
'DOCUMENT_ROOT' => '/var/www/myapp_code1',
'DOCUMENT_URI' => '/path/2.php/aa/bb',
'QUERY_STRING' => 'a=4',


0
0
分享到:
评论

相关推荐

    Windows平台,Nginx配置文件修改自动加载重启

    传统的做法是在命令行中运行`nginx -s reload`,通知Nginx进程重新读取配置文件,但这种方法需要手动操作。 为了实现配置文件修改后的自动加载重启,我们可以利用`nginx-conf-watcher`工具。这是一个监听配置文件...

    notepad++编辑nginx配置文件支持高亮

    在标题“notepad++编辑nginx配置文件支持高亮”中,我们关注的是如何在Notepad++中实现对Nginx配置文件的语法高亮显示,这将极大提升开发者的阅读和编写效率。 Nginx是一款高性能的HTTP和反向代理服务器,其配置...

    nginx配置文件参考

    nginx配置 nginx配置文件参考 nginx配置文件参考

    Nginx配置文件原始版本

    Nginx配置文件原始版本,这是刚下来的Nginx服务器最原始的版本内容,下载覆盖即可。

    Nginx 配置文件 nginx.conf 详解

    Nginx 配置文件中,用户和组的设置是通过 `user` 指令来实现的,例如 `user nobody;`,这将设置 Nginx 进程的用户为 nobody。这个设置项非常重要,因为它将影响 Nginx 服务器的安全性和稳定性。 工作进程 工作进程...

    Nginx配置文件详细说明

    在此记录下Nginx服务器nginx.conf的配置文件说明, 部分注释收集与网络. #运行用户 user www-data; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 error_log /var/log/...

    centos8 nginx1.20.1 与nginx配置文件

    在`nginx.service`文件中,添加如下内容,确保路径和指令正确: ```ini [Unit] Description=Nginx HTTP Server After=network.target [Service] User=nginx Group=nginx ExecStart=/usr/local/nginx/sbin/nginx ...

    Nginx配置文件说明.

    在Nginx的配置文件中,主要有以下几个部分: 1. **全局块**:这部分设置影响Nginx服务器整体的行为,如运行用户(`user`),工作进程数量(`worker_processes`),错误日志路径(`error_log`)和PID文件位置(`pid`...

    k8s-修改ingress-nginx-controller中nginx配置文件参数参考

    k8s-修改ingress-nginx-controller中nginx配置文件参数参考

    apache配置文件转换到nginx配置文件的工具

    一个开源的Linux下运行的命令行工具,能将Apache的配置文件转换成相应的... 该工具从Apache Web服务器中的各模块功能的角度进行分析,生成Nginx中相应模块的配置方式,然后以报告的形式生成转换后的Nginx配置文件。

    nginx配置文件.zip

    在"nginx - 反向代理.conf"文件中,可以看到配置指令如`proxy_pass`,它指定了Nginx将请求转发到的服务器地址。 2. **负载均衡(Load Balancing)**:负载均衡是通过在多台服务器之间分配工作负载来确保系统可用性...

    Nginx文件上传模块配置

    在本文中,我们将深入探讨如何配置Nginx以支持文件上传功能,特别是使用upload_module和upload_progress_module这两个第三方模块。Nginx是一个高效且灵活的HTTP服务器和反向代理,由Igor Sysoev开发,它支持模块化的...

    Nginx配置文件(nginx.conf)配置详解[定义].pdf

    Nginx配置文件中指定了用户和组,用于定义Nginx服务器的运行用户和组。在这个示例中,用户和组均未指定,表示使用默认的用户和组。 工作进程 `worker_processes 8;`指令指定了Nginx服务器的工作进程数目。在这个...

    解析nginx配置文件nginx-java-parser.zip

    解析nginx配置文件,并将nginx配置文件格式化成对象,方便java程序管理nginx配置。解析配置文件并非使用正则匹配,而是使用语法分析树处理解决的。 标签:nginx

    nginx配置文件

    在提供的文件列表中,`nginx.conf` 是主配置文件,`nginx配置说明.conf` 可能是一个示例或注释丰富的配置文件,用于学习理解。`demo1.html` 可能是一个静态HTML文件,用于测试Nginx服务器的配置。 **三、主要配置...

    NGINX conf 配置文件中的变量大全

    在深入探讨NGINX配置文件中的变量之前,我们先简要了解一下NGINX。NGINX是一款高性能的HTTP和反向代理服务器,广泛应用于互联网上处理高并发连接、静态文件服务以及负载均衡等场景。其配置文件是实现NGINX功能的核心...

    Nginx配置文件详解

    本文将详细解析Nginx配置文件中的各个组成部分及其作用。 #### 二、Nginx配置文件整体结构 Nginx配置文件主要由以下几部分组成: 1. **全局块**:包含Nginx的基础配置信息。 2. **events块**:定义Nginx如何处理...

    nginx配置文件-安装客户端ip进行转发

    首先,`nginx.conf`是Nginx的主要配置文件,它定义了全局设置和服务器块。为了基于客户端IP进行转发,我们需要关注以下关键配置项: 1. **worker_processes**: 这个指令指定Nginx应该启动多少个工作进程来处理请求...

    docker安装nginx配置文件

    docker安装nginx配置文件

    Web应用安全:Nginx权限配置.doc

    Nginx的主配置文件为“/etc/nginx/nginx.conf”,我们输入“vim /etc/nginx/nginx.conf”来查看配置文件的详细信息。 修改访问权限 在Nginx的主配置文件中的http,service或者location标签中,写入配置信息,如:...

Global site tag (gtag.js) - Google Analytics