当前位置: 首页 > news >正文

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

http://www.xdnf.cn/news/1330669.html

相关文章:

  • 《CDN加速的安全隐患与解决办法:如何构建更安全的网络加速体系》
  • 【Ansible】变量、机密、事实
  • Ubuntu-安装Epics Archiver Appliance教程
  • ansible playbook 实战案例roles | 实现基于firewalld添加端口
  • 如何使用matlab将目录下不同的excel表合并成一个表
  • 四川方言语音识别数据集,1500小时合规真人采集,高质量标注助力ASR与大模型训练
  • CISP-PTE之路--10文
  • java17学习笔记
  • python numpy.random的基础教程(附opencv 图片转数组、数组转图片)
  • cv2.bitwise_and是 OpenCV 中用于执行按位与运算的核心函数,主要用于图像处理中的像素级操作
  • 计算机视觉 图片处理 在骨架化过程中,每次迭代都会从图像的边缘移除一层像素,直到只剩下单像素宽度的骨架
  • 【图像算法 - 19】慧眼识苗:基于深度学习与OpenCV的大棚农作物生长情况智能识别检测系统
  • Kubernetes集群安装部署--flannel
  • InnoDB为什么使用B+树实现索引?
  • 从繁琐到优雅:Java Lambda 表达式全解析与实战指南
  • 【Spring Boot把日志记录到文件里面】
  • sfc_os!SfcQueueValidationRequest函数分析之sfc_os!IsFileInQueue
  • Android面试指南(三)
  • STM32学习笔记15-SPI通信软件控制
  • 《Java 多线程全面解析:从基础到生产者消费者模型》
  • InfoNES模拟器HarmonyOS移植指南
  • 从数据孤岛到实时互联:Canal 驱动的系统间数据同步实战指南
  • 排查Redis数据倾斜引发的性能瓶颈
  • python学习DAY46打卡
  • 迁移学习(Transfer Learning)
  • C语言:字符函数与字符串函数(1)
  • Go 进阶学习路线
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(17):文法+单词第5回3-复习
  • 《算法导论》第 32 章 - 字符串匹配
  • 云电脑 vs 传统PC:全面对比3A游戏与AI训练的成本与性能