【10.29】nginx 全局变量、rewrite 实战、nginx 的 location 配置
1.16 nginx 全局变量
nginx 常用全局变量
变量 | 说明 |
---|---|
$args | 请求中的参数,如 www.123.com/1.php?a=1&b=2 的$args 就是 a=1&b=2 |
$content_length | HTTP请求信息里的 “Content-Length” |
$conten_type | HTTP请求信息里的 “Content-Type” |
$document_root | nginx 虚拟主机配置文件中的 root 参数对应的值 |
$document_uri | 当前请求中不包含指令的 URI,如www.123.com/1.php?a=1&b=2 的 $document_uri 就是 1.php,不包含后面的参数 |
$host | 主机头,也就是域名 |
$http_user_agent | 客户端的详细信息,也就是浏览器的标识,用 curl -A 可以指定 |
$http_cookie | 客户端的 cookie 信息 |
$limit_rate | 如果 nginx 服务器使用 limit_rate 配置了显示网络速率,则会显示,如果没有设置, 则显示 0 |
$remote_addr | 客户端的公网 ip |
$remote_port | 客户端的 port |
$remote_user | 如果 nginx 有配置认证,该变量代表客户端认证的用户名 |
$request_body_file | 做反向代理时发给后端服务器的本地资源的名称 |
$request_method | 请求资源的方式,GET/PUT/DELETE 等 |
$request_filename | 当前请求的资源文件的路径名称,相当于是 $document_root/$document_uri 的组合 |
$request_uri | 请求的链接,包括 $document_uri和 $args |
$scheme | 请求的协议,如 ftp,http,https |
$server_protocol | 客户端请求资源使用的协议的版本,如 HTTP/1.0,HTTP/1.1,HTTP/2.0 等 |
$server_addr | 服务器 IP 地址 |
$server_name | 服务器的主机名 |
$server_port | 服务器的端口号 |
$uri | 和 $document_uri 相同 |
$http_referer | 客户端请求时的 referer,通俗讲就是该请求是通过哪个链接跳过来的,用 curl -e 可以指定 |
1.17/1.18 rewrite 实战
本部分内容为nginx生产环境中使用的场景示例。
1、域名跳转(域名重定向)
- 示例1(不带条件的):
server{
listen 80;
server_name www.1.com;
rewrite /(.*) http://www.1.com/$1 permanent;
......
}
- 示例2(带条件的):
server{
listen 80;
server_name www.1.com 1.com;
if ($host != 'www.1.com')
{
rewrite /(.*) http://www.1.com/$1 permanent;
}
......
}
- 示例3(http 跳转到 https):
server{
listen 80;
server_name www.1.com;
rewrite /(.*) https://www.1.com/$1 permanent;
......
}
- 示例4(域名访问二级目录)
server{
listen 80;
server_name bbs.1.com;
rewrite /(.*) http://www.1.com/bbs/$1 last;
......
}
- 示例5(静态请求分离)
server{
listen 80;
server_name www.1.com;
location ~* ^.+.(jpg|jpeg|gif