当前位置: 代码网 > it编程>编程语言>Java > nginx中url地址重写的实现

nginx中url地址重写的实现

2025年03月30日 Java 我要评论
一.url重写介绍【在进行url地址替换的时候,常常用完整的url地址进行替换】可以在nginx上进行配置,将客户端的访问请求进行修改,随后拿修改后的地址给客户端进行响应。如上图所示,这是使用url地

一.url重写介绍【在进行url地址替换的时候,常常用完整的url地址进行替换】

可以在nginx上进行配置,将客户端的访问请求进行修改,随后拿修改后的地址给客户端进行响应。

如上图所示,这是使用url地址重写的两种应用场景。

一种是https加密网站,nginx反向代理服务器可以对用户的url地址进行重写,加上https的前缀,

一种是当公司的业务结构发生变化的时候,用户用之前的访问地址不能访问到之前想要访问的内容,这时候就可以使用nginx反向代理服务器的url地址重写功能,将用户的url地址进行重写。使得用户能够再次以之前的访问地址,访问到之前想要访问的内容。

语法:

rewrite uri地址,新uri地址【标志】;

1.server ,location,if条件判断

2.rewrite可以存在多条,依次进行处理

3.旧uri地址支持正则表达式;新uri支持反向引用

4.旧uri地址匹配客户端时,不包括请求中的参数

如上图所示,旧uri地址在匹配客户端请求的时候,是不包含匹配中的参数,旧uri地址中是会有一个问号,这个问号之后的东西就是uri地址中的参数,

5.支持变量中的使用   $remote_addr这个表示客户端的ip地址。

如上图所示,如果客户端的访问请求,可以在location中经历10次的地址重写,那么就会给客户端返回500的错误。

标志flag

【很少去用,常常在地址改写的时候,写上完整的url地址。】

1)last

终止本location块中的匹配,将新地址转交给下一个location处理。

2)break

不会将新地址交给其他的location处理,只在本location中处理。

如上图所示,这两种方式都无法结束location的循环,但是如上图所示,如果被改写的uri地址是一个完整的url地址的时候,那么此时就可以结束location的循环。

3)redirect

表示这次改写是一次临时重定向,状态码302

4)permanet

永久重定向,状态码301

如上图所示,这是nginx的重写模块

如上图所示,这就是对一个url地址的重写过程。

案例1:改写地址中的目录名称

如上图所示,虚拟主机的网页目录是/data/python

如上图所示,这是在虚拟主机的网页目录下新创建一个目录,并且创建网页,

如上图所示,现在公司的业务结构发生变化,之前的mp3目录改名了改成了music,那么用户要想用之前的访问请求,访问之前的数据内容,就需要我nginx反向代理服务器实现url地址重写功能。

如上图所示,这是在没有配置nginx服务器反向代理服务器的地址重写功能。

如上图所示,这是在虚拟主机的配置文件中进行修改的过程,

如上图所示,这是在修改虚拟主机配置文件之后,对语法进行检查,随后使得nginx软件重新识别配置文件的操作。

如上图所示,这就是url地址重写的例子。

【考虑实际需求,当我们去实际部署一个业务的时候,不可能这个业务只有一个网页,如果这个业务有多个网页。当目录名称发生变化的时候,该怎么办?】

如上图所示,这是访问目录下有多个网页。

如上图所示,当新的数据目录下有多个网页,

如上图所示,这是利用正则表达式的反向引用。将所有mp3替换成music,并且引用用户想要访问的网页名称。

$1的意思就是要引用(.*)中的内容。

案例2:域名跳转

客户端访问我的时候,后面的访问地址是什么都可以,都会跳转到我指定的新的网站上。

案例3:实现https的自动跳转

如上图所示,如果客户端要访问我www.linux.com的网站,那我们就自动给这个网站加上https的前缀

到此这篇关于nginx中url地址重写的实现的文章就介绍到这了,更多相关nginx url地址重写内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com