-- 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',
分享到:
相关推荐
在标题“notepad++编辑nginx配置文件支持高亮”中,我们关注的是如何在Notepad++中实现对Nginx配置文件的语法高亮显示,这将极大提升开发者的阅读和编写效率。 Nginx是一款高性能的HTTP和反向代理服务器,其配置...
传统的做法是在命令行中运行`nginx -s reload`,通知Nginx进程重新读取配置文件,但这种方法需要手动操作。 为了实现配置文件修改后的自动加载重启,我们可以利用`nginx-conf-watcher`工具。这是一个监听配置文件...
nginx配置 nginx配置文件参考 nginx配置文件参考
Nginx配置文件原始版本,这是刚下来的Nginx服务器最原始的版本内容,下载覆盖即可。
Nginx 配置文件中,用户和组的设置是通过 `user` 指令来实现的,例如 `user nobody;`,这将设置 Nginx 进程的用户为 nobody。这个设置项非常重要,因为它将影响 Nginx 服务器的安全性和稳定性。 工作进程 工作进程...
在此记录下Nginx服务器nginx.conf的配置文件说明, 部分注释收集与网络. #运行用户 user www-data; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 error_log /var/log/...
在`nginx.service`文件中,添加如下内容,确保路径和指令正确: ```ini [Unit] Description=Nginx HTTP Server After=network.target [Service] User=nginx Group=nginx ExecStart=/usr/local/nginx/sbin/nginx ...
解析nginx配置文件,并将nginx配置文件格式化成对象,方便java程序管理nginx配置。解析配置文件并非使用正则匹配,而是使用语法分析树处理解决的。 标签:nginx
k8s-修改ingress-nginx-controller中nginx配置文件参数参考
在Nginx的配置文件中,主要有以下几个部分: 1. **全局块**:这部分设置影响Nginx服务器整体的行为,如运行用户(`user`),工作进程数量(`worker_processes`),错误日志路径(`error_log`)和PID文件位置(`pid`...
在深入探讨NGINX配置文件中的变量之前,我们先简要了解一下NGINX。NGINX是一款高性能的HTTP和反向代理服务器,广泛应用于互联网上处理高并发连接、静态文件服务以及负载均衡等场景。其配置文件是实现NGINX功能的核心...
Nginx配置文件中指定了用户和组,用于定义Nginx服务器的运行用户和组。在这个示例中,用户和组均未指定,表示使用默认的用户和组。 工作进程 `worker_processes 8;`指令指定了Nginx服务器的工作进程数目。在这个...
一个开源的Linux下运行的命令行工具,能将Apache的配置文件转换成相应的... 该工具从Apache Web服务器中的各模块功能的角度进行分析,生成Nginx中相应模块的配置方式,然后以报告的形式生成转换后的Nginx配置文件。
在"nginx - 反向代理.conf"文件中,可以看到配置指令如`proxy_pass`,它指定了Nginx将请求转发到的服务器地址。 2. **负载均衡(Load Balancing)**:负载均衡是通过在多台服务器之间分配工作负载来确保系统可用性...
在本文中,我们将深入探讨如何配置Nginx以支持文件上传功能,特别是使用upload_module和upload_progress_module这两个第三方模块。Nginx是一个高效且灵活的HTTP服务器和反向代理,由Igor Sysoev开发,它支持模块化的...
在提供的文件列表中,`nginx.conf` 是主配置文件,`nginx配置说明.conf` 可能是一个示例或注释丰富的配置文件,用于学习理解。`demo1.html` 可能是一个静态HTML文件,用于测试Nginx服务器的配置。 **三、主要配置...
本文将详细解析Nginx配置文件中的各个组成部分及其作用。 #### 二、Nginx配置文件整体结构 Nginx配置文件主要由以下几部分组成: 1. **全局块**:包含Nginx的基础配置信息。 2. **events块**:定义Nginx如何处理...
首先,`nginx.conf`是Nginx的主要配置文件,它定义了全局设置和服务器块。为了基于客户端IP进行转发,我们需要关注以下关键配置项: 1. **worker_processes**: 这个指令指定Nginx应该启动多少个工作进程来处理请求...
docker安装nginx配置文件
一个开源的Linux下运行... 该工具从Apache Web服务器中的各模块功能的角度进行分析,生成Nginx中相应模块的配置方式,然后以报告的形式生成转换后的Nginx配置文件。 官网:https://github.com/leeleander/apache2nginx