nginx rewrite 的用法

本文介绍如何通过Nginx的URL重写功能来改变图片资源的访问路径,包括具体的配置实例和正则表达式的解析,适用于服务器迁移场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

案例:

以前服务器中,图片路径地址如下:

/convention2/upload/image/20160815185505_274_2016-08-15_18-36-13.png

convention2 是以前java web的项目名称

现在服务器迁移到了

http://upload.yhskyc.com/

 

简单说:

我需要把

http://i.yhskyc.com/convention2/upload/image/2aa.png

映射成为:

http://upload.yhskyc.com:8084/convention2/upload/image/2aa.png

在nginx 配置文件i.yhskyc.com.conf 中添加:

if ( $uri ~* "^/convention./upload/" ) {
                rewrite ^/[^/]+/(.*)$ http://upload.yhskyc.com:8084/convention2/$1 redirect;
        }

解释:

第一行的:"^/convention./upload/" 是正则表达式,比如下面的路径都匹配:

/convention1/upload/image/2aa.png

/convention2/upload/image/2aa.png

/conventiona/upload/image/2aa.png

下面的不匹配:

/convention/upload/image/2aa.png

/convention22/upload/image/2aa.png

 

第二行的  ^/[^/]+/(.*)$ 也是正则表达式

红色部分匹配"http://i.yhskyc.com/convention2/upload/image/2aa.png"中的

convention2,

绿色部分匹配"http://i.yhskyc.com/convention2/upload/image/2aa.png"中的

upload/image/2aa.png

将替换" http://upload.yhskyc.com:8084/convention2/$1"中的$1,所以得到的结果是:

http://upload.yhskyc.com:8084/convention2/upload/image/2aa.png(这是结果)

使用rewrite ,浏览器地址会跳转,

我们输入的是:http://i.yhskyc.com/convention2/upload/image/2aa.png,

但是浏览器最终会跳转到http://upload.yhskyc.com:8084/convention2/upload/image/2aa.png,

 

语法:

~ 为区分大小写匹配
~* 为不区分大小写匹配
!和!*分别为区分大小写不匹配及不区分大小写不匹配

下面举两个例子

 if ( $uri ~ "^/stub[^E]{1,1}[a-z]{1,}" ) {
 rewrite ^/stub([^/b]+.*)$ http://www.test.com/stubb/$1 redirect;
 }

标识:以/stub开头,后面紧跟着的字符不是大写的E,例如:

http://www.test.com/stubaecp/logic/auto/vo/list

http://www.test.com/stubbb/logic/auto/vo/list

下面不满足

http://www.test.com/stubEdit/mgmt

 

第二个例子

if ( $uri ~* "^/[^s]{1,1}[^t]{1,1}" ) {
 rewrite ^/(.*)$ http://www.test.com/stubb/$1 redirect;
 }

表示不是以st开头,下面满足:

http://www.test.com/aecp/logic/auto/vo/list

http://www.test.com/dd/logic/auto/vo/list

下面的不满足:

http://www.test.com/stubEdit/mgmt

 

 

 

 

 

参考:

https://moonbingbing.gitbooks.io/openresty-best-practices/ngx/nginx_local_pcre.html

http://nginx.org/en/docs/

转载于:https://my.oschina.net/huangweiindex/blog/1794829

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值