地址重写(地址栏被重写)
例: www.360buy(京东之前的域名)-------->www.jd(新域名)
SSL+ —> (重写为https)
沿用上次的www.a的配置,实现以下要求
主要用到参数 rewrite
rewrite regex replacement flag
rewrite 旧地址 新地址 【选项】
网站内页面跳转
vim /usr/local/nginx/f....server {listen 80;server_name www.a;rewrite /a.html /b.html; #网址不会发生变化 跳转之后网址还是.html location / {root html;index index.html index.htm;}
....
添加b的界面
echo "woshiBBB" > /usr/local/nginx/html/b.html
重新加载配置文件/usr/local/nginx/sbin/nginx -s reload
客户端测试
...server {listen 80;server_name www.a;rewrite /a.html /b.html redirect; #网址会发生变化 跳转之后网址变为.html location / {root html;index index.html index.htm;}...
网址跳转
1)修改Nginx服务配置
vim /usr/local/nginx/f....server {listen 80;server_name www.a;rewrite ^/ ;#或者 rewrite / ; 正则匹配包含即可#主要访问本机,都跳转到 上面这个网址location / {root html;index index.html index.htm;}
....
重新加载配置文件/usr/local/nginx/sbin/nginx -s reload
测试:跳转成功
域名跳转,子页面不变
例:
解决方法,使用正则表达式
1)修改配置文件
vim /usr/local/nginx/f....server {listen 80;server_name www.a;rewrite ^/(.*) /$1;#正则中()保留,1粘贴,但在nginx中$!代表粘贴第一个location / {root html;index index.html index.htm;}
....
重新加载配置文件/usr/local/nginx/sbin/nginx -s reload
2)测试:
可以看出不再是刚刚的首页了
不同的浏览器返回的效果不一样
解决思路
先书写两个不同的页面,在 /usr/local/nginx/html下,其中的一个建个目录去存放,再加入一个判断,去解决页面冲突
为了实现上述要求,我们需要使用一个变量,下面是对这个变量的一些介绍log_format main '$remote_addr - $remote_user [$time_local] "$request" ' #日志格式,$remote_addr 变量,代表客户端的ip'$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';
日志每一列是什么
1.客户端的ip地址 $remote_addr
2.横线 -
3.验证的用户 $remote_user
4.方括号括起来的时间 [$time_local]
5.访问的什么的页面 "$request"
6.访问的状态$status
7.访问的网页有多少字节 $body_bytes_sent
8.代表来源 $http_referer referere 直接输网址为 - ,如果从百度来,referere = www.baidu
9.显示客户端的详细信息 $http_user_agent
开始实现:
1)创建网页目录以及对应的页面文件
echo " i am curl test " > /usr/local/nginx/html/test.html
mkdir /usr/local/nginx/html/firefox
echo " i am firefox test " > /usr/local/nginx/html/firefox/test.html
2)修改配置文件
vim /usr/local/nginx/f....server {listen 80;server_name www.a;# ~正则匹配(模糊匹配)*不区分大小写#不写*,需要写完整的名字,Firefoxif ( $http_user_agent ~* firefox) {rewrite ^/(.*) /firefox/$1;}location / {root html;index index.html index.htm;}
....
重新加载配置文件/usr/local/nginx/sbin/nginx -s reload
2)测试效果
也可以匹配其他浏览器和客户端,修改后面的Firefox为你需要的客户端或者目标浏览器
地址重写格式
测试效果
vim /usr/local/nginx/f....
server {listen 80;server_name www.a;rewrite /a.html /b.html; rewrite /b.html /c.html; location / { root html;index index.html index.htm;}
....
echo "A" >/usr/local/nginx/html/a.html
echo "B" >/usr/local/nginx/html/b.html
echo "C" >/usr/local/nginx/html/c.html
重新加载配置文件/usr/local/nginx/sbin/nginx -s reload
添加相应的参数,再次测试
vim /usr/local/nginx/f....
server {listen 80;server_name www.a;rewrite /a.html /b.html last; #匹配及停止,如果没有匹配,正常进行rewrite /b.html /c.html; location / {root html;index index.html index.htm;}
....
/usr/local/nginx/sbin/nginx -s reload
测试break
location 也是匹配地址栏,匹配到a.html,跳转到b.html
验证结果
修改
再次测试,break直接结束
本文发布于:2024-01-30 02:11:40,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170655190418501.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |