Nginx配置教程:Nginx常用变量释义

2020年11月23日14:49:43 发表评论 574

Nginx之所以灵活有一个原因就是支持变量并内置了许多常用变量,这些变量在配置文件中会经常被调用。在官方文档中有一个页面对内置变量有详细的介绍http://nginx.org/en/docs/http/ngx_http_core_module.html#variables。除了内置变量以外,每个模块也有自己的变量,这个在官网变量页面的Embedded Variables中有描述。

比如下面是Nginx日志格式的配置段,可以看到使用到了许多变量:

log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
access_log  logs/access.log  main;

Nginx常用变量释义

$args:用户请求时的所有URL参数

$arg_参数名:用户请求时URL中某个具体参数的值,非常有用

#下面代码默认请求路径是http://a,如果URL中参数at=5,则转发到http://b
location / {
if ($arg_at='5') {
proxy_pass http://b;
}
proxy_pass http://a;
}

$uri:用户请求的URI,不包括?后面的参数,使用$document_uri也是一样的效果

$request_uri:用户请求的完整URI,也就是浏览器地址栏/后面的所有内容

$remote_addr:客户端IP,现在更多使用ngx_http_realip_module来解决代理或者CDN导致IP不对的问题

$http_referer:客户端是否是从上一级页面跳转过来,如果是,那么记录上一级URL

$http_user_agent:客户端使用的浏览器

$http_x_forwarded_for:记录客户端真实IP而不是中间件的IP

$scheme:请求所用的协议,如HTTP或者HTTPS,可以使用该变量让用户跳转到https

if (schema = 'http') {
rewrite ^/(.*)$ https://$host/$1 redirect;
}

$request_method:请求方法,如GET或者POST

$document_root:当前请求所映射到的网站根路径

$remote_user:如果网站开启了用户认证,那么此值就是客户端输入的用户名

$host:http请求报文中host的首部,如果没有则以处理此请求的虚拟主机的主机名代替

$remote_port:客户端端口

$request_filename:用户请求中的URI经过本地转换后映射的本地文件路径

$server_addr:服务器地址

$server_name:服务器名称

$server_port:服务器端口

$server_protocol:服务器向客户端发送响应时的协议,如http/1.1

$http_HEADER:匹配请求报文中指定的HEADER

$http_host:匹配请求报文中的host首部

 

    发表评论

    :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: