使用变量

基本变量

server {
    listen      80;
    server_name ~^(?<user>.+)\.example\.net$;

    location / {
        root /data/$user;
    }
}

基本变量说明

  • (?<user>.+):正则表达式捕获组,捕获用户名
  • $user:使用捕获的用户名

基本变量原理: Nginx 支持使用变量,变量可以在配置中使用。变量可以来自正则表达式捕获组、内置变量等。

常用变量

变量说明示例
$host请求主机example.com
$request_uri请求 URI/index.html?q=test
$uri当前 URI/index.html
$request_method请求方法GET
$remote_addr客户端 IP192.168.1.1
$http_user_agent用户代理Mozilla/5.0
$http_referer请求来源https://example.com
$args请求参数q=test
$scheme请求协议http
$server_name服务器名称example.com
$server_port服务器端口80
$server_protocol服务器协议HTTP/1.1
$status响应状态码200
$body_bytes_sent发送的字节数1024
$request_time请求处理时间0.123
$upstream_addr上游服务器地址192.168.1.2:80
$upstream_status上游服务器状态码200
$upstream_response_time上游服务器响应时间0.123

示例

location / {
    root /data/www;
    add_header X-Request-URI $request_uri;
    add_header X-User-Agent $http_user_agent;
}

示例说明

  • add_header X-Request-URI $request_uri:添加请求 URI 响应头
  • add_header X-User-Agent $http_user_agent:添加用户代理响应头

示例原理: Nginx 支持使用变量,变量可以在配置中使用。变量可以来自内置变量、正则表达式捕获组等。

自定义变量

map $http_user_agent $is_mobile {
    default 0;
    ~*Mobile 1;
}

server {
    listen      80;
    server_name ~^(?<user>.+)\.example\.net$;

    location / {
        root /data/$user;
        add_header X-Is-Mobile $is_mobile;
    }
}

自定义变量说明

  • map:定义变量映射
  • $is_mobile:自定义变量

自定义变量原理: Nginx 支持自定义变量,可以使用 map 指令定义变量映射。