Nginx

將 nginx 從 http 轉換為 https

  • July 2, 2020

我在 aws lighsail 伺服器上託管一個網站。它是單台伺服器,我在上面執行 4 個 docker 容器。1-nginx,2-node js,3-spring bot,4-mysql。

至於現在我的網站載入很好:

   server {
   listen       80;
   server_name  *.example.com;

   #charset koi8-r;
   #access_log  /var/log/nginx/host.access.log  main;
   client_max_body_size 100M;
   location / {
       proxy_pass http://cahub-client:4000;
   }

   location /api {
       rewrite /api/(.*) /$1  break;
       proxy_pass http://microservice:8080;
   }

   #error_page  404              /404.html;

   # redirect server error pages to the static page /50x.html
   #
   error_page   500 502 503 504  /50x.html;
   location = /50x.html {
       root   /usr/share/nginx/html;
   }
}

我從 goddady 購買了 ssl 證書,現在安裝在我的伺服器上。

server {
   listen 80 default_server;
   listen [::]:80 default_server;
   server_name _;
   return 301 https://$host$request_uri;
   }

server {
   listen 443 ssl;
   server_name  *.domain.com;
   
   ssl_certificate /etc/nginx/certs/cae51a61335308544.pem;
   ssl_certificate_key /etc/nginx/certs/www.eaxmple.com.key;

   #charset koi8-r;
   #access_log  /var/log/nginx/host.access.log  main;
   client_max_body_size 200M;
   location / {
       proxy_pass http://cahub-client:4000;
   }

   location /api {
       rewrite /api/(.*) /$1  break;
       proxy_pass http://microservice:8080;
   }

   #error_page  404              /404.html;

   # redirect server error pages to the static page /50x.html
   #
   error_page   500 502 503 504  /50x.html;
   location = /50x.html {
       root   /usr/share/nginx/html;
   }
}

所以這裡發生的事情就是現在。當我在 url 中輸入我的域時,它會重定向到 https,但只有 angular 客戶端位置塊正在執行,這是我的前端。但是每當從前端到後端的呼叫時。它還應該轉到我的反向代理塊 /api.. 這不是 reolvong 而是找到錯誤混合上下文。當我在網路選項卡中看到時。我的前端呼叫是https://example.com>,但我的後端呼叫是早先的<http://example.com/api/

您需要修復您的前端應用程序,以便它呼叫後端https://example.com/api而不是http://example.com/api.

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