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

这就是我所做的:

因为/api系统有HTTPS问题,所以我必须在HTTP下提供它。 其余的我强迫他们在HTTPS。 但是,在我的Django系统中,redirect让我回到http。 这可能与django有关,但现在我想把所有的HTTP重写为HTTP。 我通常会把它放在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; } } 

啊。 我只是试了一下,看起来像是在工作。

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

然后在80块中保留所有其他内容…不会检查我的答案…