Redirect 使用nginx:http到https,并且只有一些到http的路径具有不同的端口

Redirect 使用nginx:http到https,并且只有一些到http的路径具有不同的端口,redirect,nginx,Redirect,Nginx,我希望所有http到https,并且只有一些到http的路径具有不同的端口: server { listen 80; servername _; return 301 https://$host$requesturi; location /bamboo { rewrite ^/bamboo(.*)$ http://mydomainname:8085/$1 last; } location /api { rewrite ^/api(.*)$

我希望所有http到https,并且只有一些到http的路径具有不同的端口:

server { 
  listen 80; 
  servername _; 
  return 301 https://$host$requesturi;

  location /bamboo { 
    rewrite ^/bamboo(.*)$ http://mydomainname:8085/$1 last; 
  }

  location /api { 
    rewrite ^/api(.*)$ http://mydomainname:8080/$1 last; 
  }

  return 403; 
}
上述方法不起作用, 此外,这也不起作用:

#Redirect paths
server {
listen 443;
server_name _;

  location /bamboo {
    rewrite ^/bamboo(.*)$ http://mydomainname:8085/$1 last;
  }

  location /api {
    rewrite ^/api(.*)$ http://mydomainname:8080/$1 last;
  }

  return 403;
}

#Redirect http -> https 
server { 
  listen 80; 
  servername _; 
  return 301 https://$host$requesturi;

  return 403;
}

除了这两条路径之外,还有其他方法可以让所有http发送到https吗?

我会利用nginx的声明性质在http服务器上路由所有流量。将选择最具体的位置:

server {
    listen 80 default_server;
    server_name _;

    location / {
        return 301 https://$host$request_uri;
    }

    location /bamboo/ {
        proxy_pass http://mydomainname:8085/;
    }

    location /api/ {
        proxy_pass http://mydomainname:8080/;
    }
}

请注意端口8085和8080的proxy_pass参数中的尾随/in。它将导致从URI中删除bambol和api部分,如中所述。

我将利用nginx的声明性特性在http服务器上路由所有流量。将选择最具体的位置:

server {
    listen 80 default_server;
    server_name _;

    location / {
        return 301 https://$host$request_uri;
    }

    location /bamboo/ {
        proxy_pass http://mydomainname:8085/;
    }

    location /api/ {
        proxy_pass http://mydomainname:8080/;
    }
}
请注意端口8085和8080的proxy_pass参数中的尾随/in。它将导致从URI中删除竹子和api部分,如中所述