nginx 如何用具有多个路径的 proxy_pass 替换 try_files

nginx 如何用具有多个路径的 proxy_pass 替换 try_files

我在 Nginx 中有一组这种类型的规则:

location ~ ^/race/[a-z0-9\-_]*/session/[a-z0-9\-]*/topic/[a-z0-9\-_]*$ {
   try_files $uri $uri/ /race/period/session/team/topic/index.html;
}

location /images/assets/ {
   try_files /backup/data$uri /default_images/small_asset.png =404;
}

当文件存在于服务器上但现在数据位于远程位置(AWS - S3 + cloudfront)时,这些规则有效,我需要使用proxy_pass,但想知道当我有多种选择时如何处理以下情况:

try_files $uri $uri/ /race/period/session/team/topic/index.html;

try_files /backup/data$uri /default_images/small_asset.png =404;

如何处理删除端点中的第一个路径,例如:

location /images/assets/ {
   proxy_pass http://abc.cloudfront.net/backup/data 
   # but if I get a 404 here,how to fall back to: 
   proxy_pass http://abc.cloudfront.net/default_images/small_assets.png
}

有什么想法吗?没必要,我现在需要使用 Nginx,因为内容是远程托管的,对任何替代方案都持开放态度。

相关内容