云计算学习100天-第26天

地址重写

地址重写语法------

关于Nginx服务器的地址重写,主要用到的配置参数是rewrite

语法格式:

rewrite regex replacement flag

rewrite 旧地址 新地址 选项

地址重写步骤:

#修改配置文件(访问a.html重定向到b.html)

cd /usr/local/nginx/

cp conf/nginx.conf.default conf/nginx.conf #还原配置文件

cp: overwrite 'conf/nginx.conf'? y

root@proxy nginx# vim /usr/local/nginx/conf/nginx.conf

.. ..

server {

listen 80;

server_name localhost;

rewrite /a.html /b.html; #新添加地址重写,a.html重定向到b.html

...

location / {

root html;

index index.html index.htm;

}

}

echo "nginx-B~~" > /usr/local/nginx/html/b.html

#重新加载配置文件

/usr/local/nginx/sbin/nginx -s reload

#客户端测试

http://192.168.88.5/a.html #内容显示的是nginx-B~~,但是地址栏没有发生变化,还是a.html页面

此时配置文件中直接写rewrite /a.html /b.html; 配置,在测试是其实会有些问题,比如在浏览器中访问时把192.168.88.5/a.html写成192.168.88.5/a.htmldc 或者写成 192.168.88.5/dc/a.html,访问都会正常显示b.html的页面,这是因为此时写的是只要包含a.html的都会跳转,没有进行精准匹配,可以进行以下修改,只有写a.html时才会正确跳转

vim /usr/local/nginx/conf/nginx.conf

.. ..

server {

listen 80;

server_name localhost;

rewrite ^/a\.html$ /b.html; #新添加地址重写,a.html重定向到b.html

...

/usr/local/nginx/sbin/nginx -s reload

浏览器重新访问测试即可192.168.88.5/a.html,显示b.html页面内容

测试重定向------

#redirect 临时重定向,状态码302

#permanent 永久重定向,状态码301

#修改Nginx服务配置

vim /usr/local/nginx/conf/nginx.conf

.. ..

server {

listen 80;

server_name localhost;

rewrite ^/a\.html$ /b.html redirect; #新修改,redirect重定向,测试完之后把redirect换成permanent,是一样的效果

...

location / {

root html;

index index.html index.htm;

}

}

#重新加载配置文件

/usr/local/nginx/sbin/nginx -s reload

浏览器测试,地址栏同时发生变化

http://192.168.88.5/a.html #内容显示的是nginx-B~~,地址栏发生变化,是b.html页面

不同网站间跳转------

#修改Nginx服务配置实现访问192.168.88.5的请求重定向至www.tmooc.cn

vim /usr/local/nginx/conf/nginx.conf

.. ..

server {

listen 80;

server_name localhost;

rewrite / http://www.tmooc.cn/; #新修改,访问旧网站的任意内容都跳转到新网站

location / {

root html;

index index.html index.htm;

}

}

#重新加载配置文件

/usr/local/nginx/sbin/nginx -s reload

#客户端测试

http://192.168.88.5 #可以成功跳转

子页面重定向------

#修改配置文件(访问192.168.88.5/下面子页面,重定向至www.tmooc.cn/下相同的子页面)

vim /usr/local/nginx/conf/nginx.conf

...

server {

listen 80;

server_name localhost;

rewrite /(.*) http://www.tmooc.cn/$1; #新修改

location / {

root html;

index index.html index.htm;

}

}

#重新加载配置文件

/usr/local/nginx/sbin/nginx -s reload

#客户端测试

http://192.168.88.5/b.html #成功跳转

实现不同浏览器跳转到不同页面------

#创建网页目录以及对应的页面文件:

mkdir html/firefox

echo firefox~~ > html/firefox/abc.html #火狐专用页面

cho others~~ > html/abc.html #其他浏览器专用页面

火狐访问192.168.88.5/abc.html时可以看到html/firefox/abc.html里面内容

其他浏览器访问192.168.88.5/abc.html时可以看到html/abc.html里面内容

#修改Nginx服务配置

vim /usr/local/nginx/conf/nginx.conf

.. ..

server {

listen 80;

server_name localhost;

if ($http_user_agent ~* firefox) { #如果用户使用了火狐浏览器就进行地址重写,让用户看到火狐专用页面,否则就是其他页面

rewrite /(.*) /firefox/1; #http_user_agent是nginx的内置变量,包含了发起 HTTP 请求的客户端的用户代理(User-Agent)字符串,比如用的什么浏览器

}

location / {

root html;

index index.html index.htm;

}

#重新加载配置文件

/usr/local/nginx/sbin/nginx -s reload

#客户端测试

用火狐浏览器与其他浏览器访问相同地址192.168.88.5/abc.html,可以得到不同结果

火狐浏览器访问192.168.88.5/abc.html,得到结果firefox~~

其他浏览器访问192.168.88.5/abc.html,得到结果others~~

其他选项测试------

#last 不再读其他语句,但还会继续匹配其他location语句

#break 不再读其他语句,结束请求

测试last不再读其他语句

#修改Nginx服务配置

vim /usr/local/nginx/conf/nginx.conf

.. ..

server {

listen 80;

server_name localhost;

rewrite /a.html /b.html; #新修改

rewrite /b.html /c.html; #新修改

...

}

...

#重新加载配置文件

/usr/local/nginx/sbin/nginx -s reload

echo nginx-c~~ > html/c.html

#浏览器测试

192.168.88.5/a.html #内容显示的是nginx-c~~

#如果想要访问的是b.html的内容,可以做以下更改

vim /usr/local/nginx/conf/nginx.conf

.. ..

server {

listen 80;

server_name localhost;

rewrite /a.html /b.html last; #新修改

rewrite /b.html /c.html;

...

}

...

#重新加载配置文件

/usr/local/nginx/sbin/nginx -s reload

#浏览器测试访问

192.168.88.5/a.html #内容显示的是nginx-b~~

测试last会继续匹配其他location语句

vim /usr/local/nginx/conf/nginx.conf

...

location / { #此处为默认的location

rewrite /a.html /b.html last; #新添加

root html;

index index.html index.htm;

}

location /b.html { #这里是新添加的location

rewrite /b.html /c.html;

}

...

#重新加载配置文件

/usr/local/nginx/sbin/nginx -s reload

#客户端测试: http://192.168.88.5/a.html,显示为nginx-c\~\~

break 不再读其他语句,结束请求

vim /usr/local/nginx/conf/nginx.conf

...

location / {

rewrite /a.html /b.html break; #break可以阻止后面的语句

root html;

index index.html index.htm;

}

location /b.html {

rewrite /b.html /c.html;

}

...

#重新加载配置文件

/usr/local/nginx/sbin/nginx -s reload

#客户端测试: http://192.168.88.5/a.html,显示为nginx-b\~\~

相关推荐
qq_40860686几秒前
确界的倒数性质证明
学习·算法
sunoo-2291 分钟前
嵌入式Linux驱动学习笔记(第3-6天):从misc封装、platform总线到设备树、中断与单总线外设实战
linux·arm开发·驱动开发·笔记·单片机·学习
一木 之林4 分钟前
Agent智能体学习总结:从一次调用到模型自主规划、工具调用与 ReAct 循环的项目实战-6/6
前端·人工智能·学习·react.js
来包番茄沙司25 分钟前
【网盘资源分享】2026新版尚硅谷AI Agent智能体极速版|全套课程资料+面经
人工智能·学习
每天题库40 分钟前
塔式起重机安装拆卸工考试题库 真题模拟考前押题精准覆盖
学习·安全·考试·题库·考证
KIDULT°9 小时前
MySQL系列 (1):数据库原理
运维·数据库·mysql·云计算
别动我齐刘海10 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
gjf05_0513 小时前
人该怎样活着呢?版本75.8
学习
li星野15 小时前
【学习记录】PCB与PCBA核心知识全解析:从设计到制造的关键细节
学习·制造
卿卿的产品经理日记15 小时前
【AI产品经理实战】Day 35|从“沉迷工具“到回归 AI 底层:Skill 收官、系统复盘与下一个 13 天
人工智能·学习·产品经理