当我没有尾部斜杠时,NGINX 为何会重写我的 URL?(URL 不应重写)

当我没有尾部斜杠时,NGINX 为何会重写我的 URL?(URL 不应重写)

我正在尝试获取一条路线,例如example.com/misc/page前往与 相同的地方example.com/misc/page/。该路线/misc前往一个 s3 存储桶,其中包含一堆我试图提供的其他静态页面。当我有尾部斜杠时,下面的配置可以完美运行,但如果没有尾部斜杠,则 URL 会被重写为example.com/page/

location ~* ^/misc/?(.*)$ {
    ssi on;
    proxy_pass http://<%= ENV["PROXY_S3_BUCKET"] %>/$1$is_args$args;
    proxy_set_header Host <%= ENV["PROXY_S3_BUCKET"] %>;
    proxy_cache my_proxy;
    proxy_cache_key $host$request_uri$request_method;
}

有人能告诉我为什么会发生这种重写以及我该怎么做才能防止这种情况发生吗?提前谢谢!

答案1

发现由于 s3 bucket 的文件夹结构,amazon s3 实际上正在向我的 NGINX 服务器发出重定向。为了确保从 amazon 返回的重定向不会重写我的 url,我必须使 s3 bucket 的文件夹结构与我的 url 结构相匹配。

相关内容