Nginx

重定向到另一台伺服器時,Nginx 似乎正在丟棄 HTTPS

  • April 28, 2018

我有兩台使用 nginx 配置的伺服器 A 和 B,每台都有域a.domain.comb.domain.com. B 的問題是它的 80 埠被阻塞了,所以我想我會重新路由所有請求,包括伺服器 A 到伺服器 B 的埠 80 和埠 443 流量,並在此過程中將其重寫為 HTTPS。這是我的嘗試。

一種

server {
 listen 80;
 server_name a.domain.com
 location / {
   return 301 https://b.domain.com$request_uri;
 }
}

server {
 listen 443;
 server_name a.domain.com
 ssl on;
 ssl_certificate       /* not shown */
 ssl_certificate_key   /* not shown */
 location / {
   return 301 https://b.domain.com$request_uri;
 }
}

server {
 listen 443;
 server_name b.domain.com
 ssl on;
 ssl_certificate       /* not shown */
 ssl_certificate_key   /* not shown */
 location / {
   proxy_redirect http://127.0.0.1:8080 https://b.domain.com;
   proxy_set_header Host $host;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_pass_request_headers      on;
   proxy_pass http://127.0.0.1:8080;        # this is to tomcat
   proxy_set_header X-Real-IP $remote_addr;
 }
}

問題是它不起作用。直接訪問類似https://b.domain.com/folder作品的東西,http://a.domain.com然後https://a.domain.com跳轉到https://b.domain.com,但既不http://a.domain.com/folder或也不https://a.domain.com/folder按預期重定向(到https://b.domain.com/folder)。在此過程中,如我的瀏覽器所示,HTTPS 方案被丟棄;但是因為伺服器 B 沒有埠 80 訪問請求超時。我認為值得注意的a.domain.com是配置為使用萬用字元證書,而b.domain.com配置為使用專用於子域的證書。

幫助?

您忘記了 ssl 解除安裝:

server {
  listen 443 ssl;
  server_name b.domain.com

引用自:https://serverfault.com/questions/909773