这是我的做法:
由于/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
块中的其他所有内容保持完整...不会检查我的答案...