Nginx 提供了强大的变量系统,可以在配置文件中使用这些变量来实现动态配置。以下是关于 Nginx 变量的详细使用方法:
Nginx 提供了许多内置变量,可以直接使用:
$host - 请求的主机名
$remote_addr - 客户端IP地址
$request_uri - 完整的原始请求URI
$args - 请求中的参数
$http_user_agent - 用户代理字符串
$server_name - 服务器名称
$scheme - 请求协议(http或https)
$request_method - 请求方法(GET/POST等)
使用 set
指令定义变量:
set $my_var "some value";
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
if ($http_user_agent ~* "mobile") {
set $mobile 1;
}
location / {
if ($scheme = "http") {
return 301 https://$host$request_uri;
}
}
location /api/ {
proxy_pass http://backend$request_uri;
}
变量可以在字符串中使用:
set $prefix "/static";
location $prefix/ {
root /var/www;
}
map
指令可以创建更复杂的变量映射map $http_user_agent $is_mobile {
default 0;
"~*mobile" 1;
}
$http_<header_name> # 例如 $http_user_agent, $http_referer
$cookie_<cookie_name>
$arg_<parameter_name>
map $uri $new_uri {
/old/path /new/path;
default $uri;
}
server {
rewrite ^ $new_uri;
}
(需要安装第三方模块)
set $a "1";
set $b "2";
set_by_lua $sum "return tonumber(ngx.var.a) + tonumber(ngx.var.b)";
掌握 Nginx 变量的使用可以大大提高配置的灵活性和动态性,实现更复杂的流量控制和内容处理逻辑。