我想当一个请求被发送到服务器,有一个字符串值(电影|系列|视频|.),该字符串将被删除并定向到存储数据的路径。
这是我的nginx位置配置
location ~ ^/(movie|series|video|...)/.*\.ts {
add_header Access-Control-Allow-Origin *;
add_header X-App-Id media-service-nginx;
rewrite ^/(movie|series|video|...)/(.*)$ /$1 break;
root /storage/media;
}
像这样的请求被发送到服务器
http://api.media.loc/movie/2023/02/21/video-1080-chunk_intro_300.ts
http://api.media.loc/series/2023/02/21/video-1080-chunk_intro_200.ts
http://api.media.loc/video/2023/02/21/video-1080-chunk_intro_100.ts
最后,请求应该被重定向到路径,例如/storage/media/2023/02/21/video-1080-chunk_intro_300.ts
此配置为多字符串提供404错误
但是如果在配置中写入字符串,它就可以正常工作,~ ^/movie/.*\.ts
我希望它支持多规则~ ^/(movie|series|video|...)/.*\.ts
和重写^/(movie|series|video|...)/(.*)$ /$1
,这是不工作,请帮助
1条答案
按热度按时间yqyhoc1h1#
我可以看到一个小错误,在你的regex你用在你的重写规则。您需要使用
$2
。变量$1
表示第一个捕获组,即电影、连续剧或视频部分,而$2
表示第二个捕获组,即路径的其余部分。你可以阅读这篇文章,了解**capturing groups.**它看起来像这样: