網站從http升級為https
過程記錄
https網站解決block:mixed-content問題
- 問題定位:前端升級為https,前端發出請求鏈接也應升級為https。不然會報出block:mixed-content。
- 解決問題:
- 簡單解決方法:把後端的鏈接都改為https;
- 頁面的head中加入:
功能是自動將http的不安全請求升級為https
https網站請求出錯:NET::ERR_CERT_COMMON_NAME_INVALID
前端第一次調用跨越的https的不同鏈接,遇到不安全的證書的時候,就會報這個錯誤。
https證書需要綁定域名。
通過修改Hosts鏈接地址參數信息,還是會報上面跨越的錯誤。
解決的思路。
申請正式版免費的證書。
- 可以通過https://www.qiniu.com/ 七牛雲來進行免費證書的申請。
- 不過免費的都有限制,三個月或是一年。
- 證書會與域名進行綁定,還需要申請一個域名。
- 如果部署到外網上,還需要一個外網的IP,然後域名與證書進行綁定。
- 如果部署到內網,還需要部署一個dns服務器,然後域名與IP進行綁定,後域名與證書再進行綁定。
- 總結
- 整體的過程配置複雜,要申請一個證書,正式的證書是每年收費,免費版還是有時間限制。
讓客戶點選一次,反向代理。
架構上前後端分離,如果每一個域名每一個端口需申請一個證書,那後續的證書就比較多了。
所以選擇一個證書,建立一個網站,後面通過反向代理來鏈接,就稱為一個比較好的思路。
如果證書合法,就可以直接訪問,如果證書不合法,前端用戶也只點擊一次。
推薦的方法--通過nginx來實現https(查看前端網站的部署)
配置整體的思路
因前端需要升級https,前端發起的鏈接也需要升級https。
- 通過反向代理,前端只是需要配置一個https的空殼。申請一個證書,申請一個端口就可以了。
- 配置對應的代理鏈接,代理到前端對應的http的地址信息。
- 配置對應的代理鏈接,代理到後端對應的http的地址信息。
- 配置對應的代理鏈接,代理到地圖對應的http的地址信息。
在nginx的配置信息
server { listen 443 ssl; server_name localhost; ssl_certificate c://nginx//ssl//buduhuisi.crt; ssl_certificate_key c://nginx//ssl//buduhuisi.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location /arcgis { proxy_pass http://192.168.1.35:6080; } location / { # root html; # index index.html index.htm; root D:/code_web/cyy_yujing_pages; index index.html index.htm; } }
- 注意:通過location / 配置上前端對應的頁面信息(也可以配置到另外一臺機子,不過在實踐中,跳轉到其他機子會比較慢,所以優先配置在本環境目錄下),
- 注意:通過location /arcgis 為arcgis的地圖服務信息。
- 注意:通過location /為前端的默認地址信息。
- 注意: 通過loation /gis 或是/common 等來配置後端的服務信息。
附件中已有配置好ssl的nginx的包信息
- 下載下來,然後修改下配置就行。