使用 nginx 重写时避免 302 响应

使用 nginx 重写时避免 302 响应

我有以下配置。请注意,/images映射到/app/images目标服务器,并且/app保持不变:

location /app {
    proxy_pass http://localhost:8080;
}
location /images {
    proxy_pass http://localhost:8080/app/images;
}

我想要使​​用一个location

location ~ ^/(app|images) {
    rewrite    ^/images /app/images last;
    proxy_pass http://localhost:8080;
}

但是这会将 302 发送/app/images到客户端以响应/imagesURL。我希望它“内部”执行此操作并将映射到/images/app/images这是如何做到的?

答案1

您需要使用break,以便修改后的 URI 继续在同一个位置块内处理。例如:

location ~ ^/(app|images) {
    rewrite ^/images /app$uri break;
    proxy_pass http://localhost:8080;
}

这个文件了解详情。

相关内容