Nginx 配置 proxy_pass 具有基于图像扩展的条件
Nginx configuration proxy_pass with conditions based on image extension
我有一个调整大小的服务器图像,具有以下 nginx 配置:
location ~ ^/assets/([0-9]+)x([0-9]+)/(.+) {
proxy_pass http://192.168.0.15:9900/fit?width=&height=&interlace=true&url=https://cdn.test.org/assets/;
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;
}
下面是在浏览器访问时的URLhttps://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=&height=&interlace=true&url=https://cdn.test.org/assets/;
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/x/\.png$ {
proxy_pass http://192.168.0.20:9900/fit?width=&height=&quality=90&interlace=true&url=https://cdn2.test.org/;
}
}
请帮忙。
您的 location
块中的正则表达式包含三个数字捕获,分配给 </code>、<code>
和 </code>。</p>
<p>最终捕获可以包含一个模式,该模式将匹配限制为以 <code>.jpg
或 .png
等结尾的 URI。
例如:
location ~ ^/assets/([0-9]+)x([0-9]+)/(.+\.png)$ { ... }
要匹配两个或多个文件扩展名,请使用交替组。例如:
location ~ ^/assets/([0-9]+)x([0-9]+)/(.+\.(jpg|jpeg))$ { ... }
最后一个示例创建了另一个分配给 </code> 的数字捕获,可以将其忽略。可以使用 non-capturing 组(例如 <code>(?:jpg|jpeg)
),但它会使正则表达式难以阅读。
我有一个调整大小的服务器图像,具有以下 nginx 配置:
location ~ ^/assets/([0-9]+)x([0-9]+)/(.+) {
proxy_pass http://192.168.0.15:9900/fit?width=&height=&interlace=true&url=https://cdn.test.org/assets/;
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;
}
下面是在浏览器访问时的URLhttps://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=&height=&interlace=true&url=https://cdn.test.org/assets/;
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/x/\.png$ {
proxy_pass http://192.168.0.20:9900/fit?width=&height=&quality=90&interlace=true&url=https://cdn2.test.org/;
}
}
请帮忙。
您的 location
块中的正则表达式包含三个数字捕获,分配给 </code>、<code>
和 </code>。</p>
<p>最终捕获可以包含一个模式,该模式将匹配限制为以 <code>.jpg
或 .png
等结尾的 URI。
例如:
location ~ ^/assets/([0-9]+)x([0-9]+)/(.+\.png)$ { ... }
要匹配两个或多个文件扩展名,请使用交替组。例如:
location ~ ^/assets/([0-9]+)x([0-9]+)/(.+\.(jpg|jpeg))$ { ... }
最后一个示例创建了另一个分配给 </code> 的数字捕获,可以将其忽略。可以使用 non-capturing 组(例如 <code>(?:jpg|jpeg)
),但它会使正则表达式难以阅读。