我如何告诉 Nginx 跳过重写某些特定位置?

我如何告诉 Nginx 跳过重写某些特定位置?

这是我的做法:

由于/api系统存在 HTTPS 问题,因此我必须在 HTTP 下提供服务。其余的我强制它们使用 HTTPS。但是,在我的 django 系统中,重定向返回的是 http。这可能与 django 有关,但目前,我想将所有 HTTP 重写为 HTTPs。我通常会将其放在服务器80块中,但我想保留/api为 HTTP。

我如何使用重写来做到这一点?

谢谢。

    server {
        listen 80;
        server_name localhost 127.0.0.1;
        server_name_in_redirect off;
        client_max_body_size 100M;

        location /api {
            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_pass http://localhost:5050;
            proxy_redirect default;
        }

    }
    server {

        listen 443;
        ssl on;

        location /app1 {
         ....
         proxy_pass http://localhost:1234;
        }

        location /app2 {
         ... 
         proxy_pass http://localhost:5678;
        }
}

答案1

啊。我刚刚尝试了一下,看起来效果不错。

if ($request_uri !~ (/api)){
    rewrite     ^(.*)   https://$http_host$1 permanent;
}

然后让80块中的其他所有内容保持完整...不会检查我的答案...

相关内容