变量名称 变量说明
$args 这个变量等于请求行中的参数,同$query_string
$content_length 请求头中的Content-length字段
$content_type 请求头中的Content-Type字段
$document_root 当前请求在root指令中指定的值
$host 请求主机头字段,否则为服务器名称
$http_user_agent 客户端agent信息
$http_cookie 客户端cookie信息
$limit_rate 这个变量可以限制连接速率
$request_method 客户端请求的动作,通常为GET或POST
$remote_addr 客户端的IP地址
$remote_port 客户端的端口
$remote_user 已经经过Auth Basic Module验证的用户名
$request_filename 当前请求的文件路径,由root或alias指令与URI请求生成
$scheme HTTP方法(如http,https)
$server_protocol 请求使用的协议,通常是HTTP/1.0或HTTP/1.1
$server_addr 服务器地址,在完成一次系统调用后可以确定这个值
$server_name 服务器名称
$server_port 请求到达服务器的端口号
$request_uri 包含请求参数的原始URI,不包含主机名,如:”/foo/bar.php?arg=baz”
$uri 不带请求参数的当前URI,$uri不包含主机名,如”/foo/bar.html”
$document_uri 与$uri相同
例:http://www.xxx.com:88/test1/test2/test.php
$host:www.xxx.com #localhost 域名
$server_port:88 #端口号
$request_uri:http://www.xxx.com:88/test1/test2/test.php #完整url
$document_uri:/test1/test2/test.php #端口号后的url路径
$document_root:/var/www/html #实体文件所在的根路径
$request_filename:/var/www/html/test1/test2/test.php #实体文件所在的绝对路径
==============================================================
-nginx 地址重写 rewrite实验:
例1 : 输入域名 重写至 京东官网(可自定义域名和跳转网页)
#http://www.tianyun.com/ccc/1.html ==> http://jd.com/ccc/1.html
- 1.配置虚拟ip:
ifconfig enp0s25:5 10.0.13.200
ifconfig
可查看配置情况:
- 2.在/etc/hosts 中写入域名解析:
# 将虚拟ip 配置自定义域名www.tianyun.com中
10.0.13.200 www.tianyun.com
- 3.在/etc/nginx/conf.d/下的rewrite.conf中写入
vim rewrite.conf #创建rewrite.conf文件
server {
listen 10.0.13.200:80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log
location / { #根目录为主页
root /usr/share/nginx/html;
index index.html;
}
if ( $host ~* www.tianyun.com ) { #当正则匹配到www.tianyun.com时重写至京东首页
rewrite .* http://jd.com$request_uri permanent;
# return 301 http://jd.com$request_uri;
}
}
- 4.重启nginx服务
systemctl restart nginx
- 5.在浏览器中输入
www.tianyun.com
可跳转至京东首页
例2: 用户解析:
#http://alice.tianyun.com ==> http://www.tianyun.com/alice
#http://jack.tianyun.com ==> http://www.tianyun.com/jack
- 1.在/usr/share/nginx/html 中创建文件夹jack和alice并写入内容
mkdir jack alice
echo jack.... > jack/index.html
echo alice... > alice/index.html
- 2.在/etc/nginx/conf.d/下的rewrite.conf中添加两个 if 块进行路径匹配
if ($host ~* "^www.tianyun.com$" ) {
break;
}
if ($host ~* "^(.*)\.tianyun\.com$" ) {
set $user $1;
rewrite .* http://www.tianyun.com/$user permanent;
}
-
则整个rewrite.conf为:
rewrite.conf.png - 3.重启nginx服务
systemctl restart nginx
注意:有可能报错 无法解析,报错如下:
解析不了.png
原因可能是:在/etc/hosts 下没有添加用户的域名解析
10.0.13.200 alice.tianyun.com
10.0.13.200 jack.tianyun.com
用户的域名解析.png
- 4.在浏览器中输入
alice.tianyun.com
可跳转至www.tianyun.com/alice
image.png
( jack 同上 )
==============================================================
拓展题:
(后续空闲再更新完整操作实验版本)
注意
:
- last 标记在本条 rewrite 规则执行完后,会对其所在的 server { ... } 标签
重新发起请求
;
- last 标记在本条 rewrite 规则执行完后,会对其所在的 server { ... } 标签
- break 标记则在本条规则匹配完成后,
停止匹配
,不再做后续的匹配;
- break 标记则在本条规则匹配完成后,
- 使用
alias
指令时,必须使用last
;
- 使用
- 使用
proxy_pass
指令时,则必须使用break
。
- 使用
[root@localhost html]# mkdir test
[root@localhost html]# echo 'break' > test/break.html
[root@localhost html]# echo 'last' > test/last.html
[root@localhost html]# echo 'test...' > test/test.html
image.png
网友评论