nginx之地址重写

nginx地址重写

1,语法
格式:rewrite 旧地址 新地址 [选项]
选项:
rewrite 旧地址 新地址 [选项];
last 不再读其他rewrite
break 不再读其他语句,结束请求
redirect 临时重定向
permament 永久重定向

2,实战

1)实现访问jluo.html重定向到jluocc.html(不跳转地址栏)
#vim /usr/local/nginx/conf/nginx.conf
ocation / {
root html;
index index.html index.htm;
rewrite /jluo.html /jluocc.html; #转义
}

2)实现访问jluo.html重定向到jluocc.html(跳转地址栏)
#vim /usr/local/nginx/conf/nginx.conf
ocation / {
root html;
index index.html index.htm;
rewrite /jluo.html /jluocc.html redirect; #转义
}

3)实现访问www.jluo.com的请求重定向到www.jluocc.cn去
server {
listen 80;
server_name www.jluo.com;
rewrite ^/ http://www.jluocc.cn/;
location / {
root html;
index index.html index.htm;
}
}

4)实现访问www.jluo.com的子页面,重定向到www.jluocc.cn相同的子页面去
server {
listen 80;
server_name www.jluo.com;
rewrite ^/(.*) http://www.jluocc.cn/$1; //使用正则
location / {
root html;
index index.html index.htm;
}
}

5)实现不同的设备访问相同的地址返回的页面不同
用途:实现部署不同页面(手机端,电脑端)
如:实现curl和火狐访问相同链接返回的页面不同
[root@proxy ~]# echo "I am Normal page" > /usr/local/nginx/html/test.html
[root@proxy ~]# mkdir -p /usr/local/nginx/html/firefox/
[root@proxy ~]# echo "firefox page" > /usr/local/nginx/html/firefox/test.html
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
#这里,~符号代表正则匹配,符号代表不区分大小写
if ($http_user_agent ~
firefox) { #识别客户端firefox浏览器
rewrite ^(.*) /firefox/$1;
}
提示:
每个实验做完都是需要重新加载配置文件的,命令如下
[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload
#请先确保nginx是启动状态,否则运行该命令会报错,报错信息如下:
#[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

3,nginx常量
#tail -1 /usr/local/nginx/log/access.log
192.168.4.254 -  tom  [31/Oct/2018:21:46:44 +0800] " GET / HTTP/1.1"  200 2 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"

$remote_addr:远程客户机的地址=> 192.168.4.254
$remote_user:远程登录用户,即为nginx用户认证页面登录的用户=>tom 没有即为 -
$time_local:访问的时间=>31/Oct/2018:21:46:44 +0800
$request:请求方式=>GET / HTTP/1.1
$sttatus:请求返回的状态码=>200
$body_bytes_sent:字节大小=>2
$http_user_agent:客户端设备信息=>"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"

猜你喜欢

转载自blog.51cto.com/14050800/2312717