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

相关推荐
y = xⁿ1 天前
DeepSeek Harness 学习日记:关于Agent接口,工具调用的底层实现
android·java·学习
HugoStudio_SWAN1 天前
【擦除重绘】C++ 控制台动画:弹跳 Logo DVD 屏保效果
开发语言·c++·学习·程序人生
sakiko_1 天前
Swift学习笔记42-SwiftUI的属性包装器(讲解+面试)
笔记·学习·ios·swiftui·swift
存在morning1 天前
【Paimon 学习笔记 三】工作流程:Paimon 的批写、流写、批读与流读
笔记·学习
老当益壮梁奶奶1 天前
Linux软件编程学习笔记(八):进程间通信详解(1)
linux·c语言·笔记·学习·算法
凯尔萨厮1 天前
Java学习笔记十(注解)
java·笔记·学习
JoannaJuanCV1 天前
VLM学习-SFT(监督微调)
深度学习·学习·机器学习·大模型·视觉大模型·vlm·视觉编码器
程序员大雄学编程1 天前
微积分43. 无穷积分入门:从概念到Python实战可视化
开发语言·python·学习·微积分
一条破秋裤1 天前
STM32 学习笔记:GPIO 输出实验——LED 闪烁、流水灯与蜂鸣器
笔记·stm32·学习
2601_962073971 天前
【MySQL】全面学习数据库查询技巧:查询指令深度学习指南
数据库·学习·mysql