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

相关推荐
南猿北者1 小时前
Cmake学习笔记
笔记·学习·策略模式
测试老哥3 小时前
pytest+requests+allure自动化测试接入Jenkins学习
自动化测试·软件测试·学习·测试工具·职场和发展·jenkins·pytest
Britz_Kevin6 小时前
从零开始的云计算生活——第四十六天,铁杵成针,kubernetes模块之Configmap资源与Secret资源对象
kubernetes·云计算·生活
Akamai中国7 小时前
AI需要防火墙,云计算需要重新构想
人工智能·云计算·云服务
diablobaal7 小时前
云计算学习100天-第21天
学习
Britz_Kevin7 小时前
从零开始的云计算生活——第四十七天,细水长流,kubernetes模块之ingress资源对象
kubernetes·云计算·生活
好望角雾眠18 小时前
第一阶段C#基础-10:集合(Arraylist,list,Dictionary等)
笔记·学习·c#
艾伦~耶格尔18 小时前
【集合框架LinkedList底层添加元素机制】
java·开发语言·学习·面试
星仔编程18 小时前
python学习DAY46打卡
学习