Nginx - 将根文件夹上的特定请求重定向到子域

时间:2016-02-22 09:47:17

标签: regex amazon-web-services nginx amazon-s3

我目前有一个以前在本地托管图像的托管网站。 在当前系统之前,图像链接是从根文件夹

引用的

EG:

https://example.com/image.jpg

我们已经转移到AWS S3存储,为了将旧图像请求定向到S3,我们将以下内容添加到我们的nginx conf文件中。

location ~* ^/.*\.(jpg|gif|png|jpeg) {
        rewrite ^/(.*)$ "$scheme://i.example.com/$1" permanent;
}

然而,这会捕获域中的所有图像文件。

有没有办法只重定向根域上的图像请求请求并忽略其他文件夹?

例如,用户头像存储在本地

https://example.com/content/images/user/qwerty.jpg

由于正则表达式,这些会被重定向到子域。

我还尝试使用S3 proxy_pass。但结果是一样的。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

要仅选择顶级目录中的图像文件,您应该将正则表达式的.*元素替换为与/不匹配的内容。如:

location ~* ^/[^/]*\.(jpg|gif|png|jpeg)$ {
    return 301 $scheme://i.example.com/$request_uri;
}