文章目录
- 1. 请求
- - $args (参数)
- - $query_string (请求参数)
- - $is_args (参数判断)
- - $arg_PARAMETER
- - $request (客户端请求)
- - $request_body (客户端请求的报文体)
- - $request_body_file
- - $request_filename (请求文件路径)
- - $request_method (请求的方法)
- - $uri (请求URI)
- - $request_uri (请求的URI,带参数)
- 2. 客户端信息
- - $remote_addr (客户端IP地址)
- - $binary_remote_addr (客户端地址的二进制表示)
- - $remote_port (客户端端口号)
- - $remote_user (客户端用户名)
- - $http_cookie (客户端的cookie信息)
- - $http_user_agent (客户端代理信息)
- 3. 服务器信息
- - $scheme (使用协议)
- - $server_addr (服务器地址)
- - $server_port (服务器端口号)
- - $server_protocol (请求的协议版本)
- - $document_uri (请求的URI)
- - $document_root (root路径)
- - $limit_rate (速率的限制)
- - $nginx_version (nginx版本)
- - $pid (主进程的进程ID)
- 4. Headers
- - $host
- - $content_type (请求信息里的Content-Type字段)
- - $http_x_forwarded_for (访问真实IP路径)
- - $content_length (Content-Length字段)
- - $http_HEADER (header中指定字段)
- - $http_referer (引用地址)
- - $http_via 最后一个访问服务器的IP地址
- - 其他header 的字段
1. 请求
- $args (参数)
客户端请求中的参数
- 示例
location /crow {
return 501 $args\n;
}
- 访问测试
- $query_string (请求参数)
与$args相同
- $is_args (参数判断)
如果$args有值,则等于“?”;否则等于空
- 示例
location /crow {
return 501 $is_args\n;
}
- 访问测试
有参数:
没有参数:
- $arg_PARAMETER
客户端GET请求中PARAMETER字段的值
- 示例
location /crow {
return 501 $arg_name\n;
}
- 访问测试
- $request (客户端请求)
- 示例
location /crow {
return 501 $request\n;
}
- 访问测试
- $request_body (客户端请求的报文体)
- $request_body_file
发往后端服务器的本地临时缓存文件的名称
- $request_filename (请求文件路径)
当前请求的文件路径名,由root或alias指令与URI请求生成
- 示例
location /crow {
return 501 $request_filename\n;
}
- 访问验证
- $request_method (请求的方法)
- 示例
location /crow {
return 501 $request_method\n;
}
- 访问验证
- $uri (请求URI)
请求的不带请求参数的URI,可能和最初的值有不同,比如 经过重定向之类的
- 示例
location /crow {
return 501 $uri\n;
}
- 访问验证
- $request_uri (请求的URI,带参数)
请求的URI,带参数,不包含主机名
- 示例
location /crow {
return 501 $request_uri\n;
}
- 访问验证
2. 客户端信息
- $remote_addr (客户端IP地址)
- 示例
location /crow {
return 501 $remote_addr\n;
}
- 访问测试
- $binary_remote_addr (客户端地址的二进制表示)
略
- $remote_port (客户端端口号)
略
- $remote_user (客户端用户名)
客户端用户名,用于Auth Basic Module验证
- 示例
location /crow {
return 501 $remote_user\n;
}
- 验证
- $http_cookie (客户端的cookie信息)
- $http_user_agent (客户端代理信息)
3. 服务器信息
- $scheme (使用协议)
- 示例
location /crow {
return 501 $scheme\n;
}
- 验证
- $server_addr (服务器地址)
服务器地址,如果没有用listen指明服务器地址,使用这个变 量将发起一次系统调用以取得地址(这样会造成资源浪费)$server_name请求到达的服务器名
- 示例
location /crow {
return 501 $server_addr\n;
}
- 验证
容器下nginx说明:
这是docker内网的一个ip,我们可以看到docker为nginx容器创建了一个默认网络,这个网络的信息如下:1687: br-5d8d4edb9cab: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:b8:7d:5c:4b brd ff:ff:ff:ff:ff:ff inet 192.168.80.1/20 brd 192.168.95.255 scope global br-5d8d4edb9cab valid_lft forever preferred_lft forever
192.168.80.1
是该网络的路由地址,192.168.80.2
虽然我们没有看到,但作为这个网络的唯一节点,可以想到容器分配了这个IP。
- $server_port (服务器端口号)
- 示例
location /crow {
return 501 $server_port\n;
}
- 验证
我们访问的是 1840端口,而返回的是 80端口。因为我们容器内使用的是 80端口,1840只是映射出来的端口。
- $server_protocol (请求的协议版本)
- $document_uri (请求的URI)
- 示例
location /crow {
return 501 $document_uri\n;
}
- 访问验证
- $document_root (root路径)
- 示例
location /crow {
return 501 $document_root\n;
}
- 访问验证
- $limit_rate (速率的限制)
- $nginx_version (nginx版本)
- $pid (主进程的进程ID)
4. Headers
- $host
请求信息中的Host头域值,如果请求中没有则取访问服务器的IP
- 示例
location /crow {
return 501 $host\n;
}
- 验证
- $content_type (请求信息里的Content-Type字段)
- 示例
location /crow {
return 501 $content_type\n;
}
- 访问验证
- $http_x_forwarded_for (访问真实IP路径)
从客户端到服务器的网络路径,格式:
X-Forwarded-For: client, proxy1, proxy2
- 示例
location /crow {
return 501 $http_x_forwarded_for\n;
}
- 验证
- $content_length (Content-Length字段)
HTTP请求信息里的Content-Length字段
- 示例
location /crow {
return 501 $content_length\n;
}
- 访问验证
- $http_HEADER (header中指定字段)
- 示例
location /crow {
return 501 $http_crow\n;
}
- 访问验证
- $http_referer (引用地址)
告诉服务器访问是从哪个页面链接过来的,可防止盗链。
- 示例
location /crow {
return 501 $http_referer\n;
}
- 访问验证
- $http_via 最后一个访问服务器的IP地址
- 其他header 的字段
- $sent_http_cache_control
- $sent_http_connection
- $sent_http_content_length
- $sent_http_content_type
- $sent_http_keep_alive
- $sent_http_last_modified
- $sent_http_location
- $sent_http_transfer_encoding