云计算学习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\~\~

相关推荐
通信小呆呆3 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
H__Rick3 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee3 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
Alsn863 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
YM52e3 天前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统
小雨下雨的雨3 天前
HarmonyOS ArkUI训练营入门-组件掌握系列-Animation 动画效果实现-PC版本
学习·华为·harmonyos·鸿蒙
cqbzcsq3 天前
CellFlow虚拟细胞论文阅读
论文阅读·人工智能·笔记·学习·生物信息
YangYang9YangYan3 天前
2026初入职场学习数据分析的价值
学习·数据挖掘·数据分析
guslegend3 天前
理论学习:什么是 Coding Agent?
学习
自传.3 天前
尚硅谷 Vibe Coding|第三章(1) Claude Code深度使用与进阶技巧 学习笔记
笔记·学习·尚硅谷·vibecoding