nginx

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > nginx > nginx内置变量

Nginx内置变量应用场景分析

作者:岚叔运维

Nginx内置变量速查表,涵盖请求URI、客户端信息、服务器信息、文件路径、响应与性能等类别,这篇文章给大家介绍Nginx内置变量应用场景分析,感兴趣的朋友跟随小编一起看看吧

Nginx 的内置变量是其配置灵活性的核心,它们提供了丰富的客户端请求和服务器状态信息。下述表格汇总了这些变量,并附带了实用的分类和说明,方便快速查阅和使用。

1. Nginx 内置变量速查表

变量类别

变量名

说明与示例

请求URI与参数

$uri/ $document_uri

当前请求的URI(不含参数),可能经过内部重写。例:/api/user

$request_uri

客户端原始的完整请求URI(含参数)。例:/api/user?id=1

$args/ $query_string

请求行中的参数字符串。例:id=1&name=test

$arg_name

获取指定名称的参数值。例:$arg_id的值为 1

$is_args

如果请求有参数,值为?,否则为空。常用于拼接URL

客户端信息

$remote_addr

客户端的直接IP地址

$http_x_forwarded_for

透传客户端原始IP的请求头,常用于识别经过代理的真实用户IP

$http_user_agent

客户端浏览器标识

$http_referer

请求来源页面

请求内容

$request_method

HTTP 请求方法,如 GETPOST

$content_length

请求头中的 Content-Length字段

$content_type

请求头中的 Content-Type字段

$request_body

客户端的请求主体内容

服务器信息

$host

请求的主机名,优先级:请求行 > "Host"请求头 > 匹配的服务器名

$server_name

当前匹配的服务器块名称

$server_port

请求到达的服务器端口

$scheme

请求协议,httphttps

$https

若为SSL安全模式,值为 on,否则为空

文件路径

$document_root

当前请求的文档根目录或别名

$request_filename

当前请求映射到的本地文件系统路径

响应与性能

$status

HTTP 响应状态码

$body_bytes_sent

发送给客户端的响应体字节数(不含头)

$request_time

处理请求所耗费的时间

其他常用变量

$cookie_name

获取指定名称的 Cookie 值

$http_name

获取任意请求头字段,将-替换为下划线,字母小写。例:$http_accept_language

$nginx_version

Nginx 版本号

$time_iso8601

服务器时间的 ISO 8601 格式

2. 核心变量详解与应用场景

了解这些变量的典型用法,能帮助你更好地配置Nginx。

3. 实际应用举例

下面通过几个常见场景展示这些变量的用法。

记录详细日志

你可以在 log_format中组合使用变量,记录更丰富的信息。例如,记录客户端IP、用户代理、请求处理时间和响应状态:

log_format main '$remote_addr - $remote_user [$time_local] '
               '"$request" $status $body_bytes_sent '
               '"$http_referer" "$http_user_agent" '
               '$request_time';

访问控制与重定向

根据参数重写URL:

if ($arg_version = "v2") {
    rewrite ^/api/(.*)$ /v2/api/$1 last;
}

基于原始IP进行访问限制(注意:需确保代理服务器正确设置了 X-Forwarded-For):

# 允许来自192.168.1.100和10.0.0.0/8网段的请求
if ($http_x_forwarded_for !~* "^(192\.168\.1\.100|10\..*)") {
    return 403;
}

代理配置

在反向代理设置中,常使用变量向后端传递原始请求信息:

location /api/ {
    proxy_pass http://backend_server;
    # 将原始Host头传递给后端
    proxy_set_header Host $host;
    # 传递客户端真实IP
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

4. 注意事项

到此这篇关于Nginx内置变量应用场景分析的文章就介绍到这了,更多相关nginx内置变量内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文