曲径通幽论坛

标题: rewrite 常用的全局变量说明 [打印本页]

作者: beyes    时间: 2015-8-7 10:07
标题: rewrite 常用的全局变量说明
$args   该变量存放了请求 URL 中的请求指令。比如 http://www.groad.net/bbs/forum.php?mod=forumdisplay&fid=53 中的 mod=forumdisplay&fid=53 ,可以如下测试:
  1. if ($args ~* "mod=forumdisplay&fid=53") {
  2.                 return 400;
  3.           }
复制代码


当你访问上述网址时,会看到服务器返回 400 的错误:
[attach]4082[/attach]

需要注意的是,如果 nginx 配置成正向代理,那么你返回 500 错误时,不会有效。

$content_length  变量中存放了请求头中的 Content-length 字段。

$content_type 变量中存放了请求头中的 Content-type 字段。

$document_root 变量中存放了针对当前请求的根路径。

$document_uri 变量中存放了请求中的当前 URI,并且不包含请求指令,比如 http://www.groad.net/bbs/forum.php?mod=forumdisplay&fid=53 中的 "/bbs" 。因此,如果用以下代码测试:
  1. if ($document_uri ~* "/bbs") {
  2.                 return 400;
  3.           }
复制代码

就会无法访问到本站。

$host   变量中存放了请求 URL 中的主机部分字段,比如 http://www.groad.net/bbs/forum.php?mod=forumdisplay&fid=53 中的 www.groad.net 。如果请求中的主机部分字段不可用或为空,则存放 Ngnix 配置中该 server 块中 server_name 指令的配置值。


$http_user_agent   变量中存放客户端的代理信息。

$http_cookie    变量中存放客户端的 cookie 信息。

$limit_rate    变量中存放了 Nginx 服务器对网络连接速率的限制,也就是 Nginx 配置中 limit_rate 指令的配置值。

$remote_addr   变量中存放了客户端的地址。

$remote_port    变量中存放了客户端与服务器建立的连接端口号。

$remote_user    变量中存放了客户端的用户名。

$request_body_file   变量中存放了发给后端服务器的本地文件资源的名称。

$request_method    变量中存放了客户端的请求方式,如 "GET", "POST" 等。

$request_filename   变量中存放了当前请求资源文件的路径名。

$request_uri       变量中存放了当前的 URI,并且带请求指令。

$query_string   与变量 $args 含义相同。

$scheme     变量中存放了客户端请求使用的协议,比如 "http", "https" 和 "ftp" 等。

$server_protocol   变量中存放了客户端请求协议的版本,比如 “HTTP/1.0” , "HTTP/1.1" 等。

$server_addr   变量中存放了服务器的地址

$server_name  变量中存放了客户端请求到达的服务器的名称。

$server_port  变量中存放了客户端请求到达的服务器的端口号。

$uri 与变量 $document_uri 含义相同。










欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2