如何在特定 nginx 位置块中将 URL 从 https 重定向到 http

如何在特定 nginx 位置块中将 URL 从 https 重定向到 http

这个问题与此无关关联

我的应用程序基于 Web,使用 Django 开发,通过 UWSGI 应用程序服务器部署,使用 nginx 作为反向代理。任务是从httpshttp对于特定的 URL,但这对我来说听起来并不简单,因为我试图应对以下 nginx 配置:

默认代理配置如下:

proxy_redirect      off;
proxy_set_header    Host                $host;
proxy_set_header    X-Real-IP           $remote_addr;
proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
proxy_set_header    X-Forwarded-Host    $host;
proxy_set_header    X-Forwarded-Server  $host;
proxy_set_header    X-Forwarded-Proto   $scheme;

问题发生的位置块如下:

    location ~ /target\.xml$ {
        if ($scheme = https) {
           return 302 http://$host$request_uri;
        }
    }

我们需要重定向的url如下:

**https://test-server.com/api/stage/7uibsiub3jbh3v3h/target.xml**

这里如果一个 url 包含 target.xml 并且是 https 方案,那么它应该重定向到 http,但我们收到的是重定向循环由于缺失而陷入困境if 条件在位置。我们一旦添加 if 条件来检查 nginx 给出的方案404 Not Found错误。我仔细检查了 nginx 文档,它告诉我不要使用 if 条件,因为大多数情况下它都可能是坏的,所以我坚持使用位置,但我无法对其进行更多调试。

提前致谢。

相关内容