如何解决Nginx配置proxy_pass具有基于图像扩展的条件
我使用以下nginx配置调整了服务器映像的大小:
location ~ ^/assets/([0-9]+)x([0-9]+)/(.+) {
proxy_pass http://192.168.0.15:9900/fit?width=$1&height=$2&interlace=true&url=https://cdn.test.org/assets/$3;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-FRAME-OPTIONS SAMEORIGIN;
proxy_set_header X-Forwarded-For $remote_addr;
}
,以下是在浏览器中访问时的URL:https://test.org/100x100/upload/image.jpg。
,我目前有2个图像调整大小服务器,1个用于jpg,1个用于png。如果要为jpeg请求文件,我将如何确定,然后将其定向到第一个代理服务器通行证,如果是png,则将其定向到第二个代理服务器通行证。而不删除宽度($ 1),高度($ 2)和后面的文件夹($ 3)的变量值。
location ~ ^/assets/([0-9]+)x([0-9]+)/(.+) {
proxy_pass http://192.168.0.15:9900/fit?width=$1&height=$2&interlace=true&url=https://cdn.test.org/assets/$3;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-FRAME-OPTIONS SAMEORIGIN;
proxy_set_header X-Forwarded-For $remote_addr;
location ~ ^/assets/$1x$2/$3\.png$ {
proxy_pass http://192.168.0.20:9900/fit?width=$1&height=$2&quality=90&interlace=true&url=https://cdn2.test.org/$3;
}
}
请帮助。
解决方法
location
块中的正则表达式包含三个数字捕获,分别分配给$1
,$2
和$3
。
最终捕获可以包含一种模式,该模式将匹配限制为以.jpg
或.png
等结尾的URI。
例如:
location ~ ^/assets/([0-9]+)x([0-9]+)/(.+\.png)$ { ... }
要匹配两个或多个文件扩展名,请使用替代组。例如:
location ~ ^/assets/([0-9]+)x([0-9]+)/(.+\.(jpg|jpeg))$ { ... }
最后一个示例创建另一个分配给$4
的数字捕获,可以忽略该捕获。可以使用非捕获组(例如(?:jpg|jpeg)
),但会使正则表达式难以阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。