問題分析
之前將自己所有的 Http
站點全部更新為 Https
站點,但是在請求后臺接口服務的時候還是 Http
請求,導致部署之后,直接在控制臺報 This request has been blocked; the content must be served over HTTPS;
的錯誤
解決思路
因為我不想耗費精力,將所有的后臺接口服務也更新為支持 Https
請求,所以訪問了一些資料之后,發(fā)現(xiàn)了一個非常巧妙的思路,省時省力解決這個問題。
那就是直接使用Nginx將后臺接口服務的 http
請求地址代理到前端 Https
站點的一個目錄下,經(jīng)過Nginx這一層將后臺接口服務的 Http
請求包裝成 Https
請求
舉個栗子
- 比如你之前的后臺接口服務請求地址是:
http://bbb.com
(甚至你的請求地址是ip+端口
都沒關系) - 然后你的前端站點部署的域名是:
https://aaa.com
- 你可以通過修改Nginx配置,將后臺接口服務的地址轉(zhuǎn)發(fā)到前端域名地址的一個目錄下,比如:
https://aaa.com/bbb-api
- 這樣就可以讓 Nginx 幫你解決
http
請求無法訪問https
站點的問題 ~~~ 牛逼 o( ̄▽ ̄)d
Nginx配置示例
這里沒有放出全部的配置示例,因為只需要修改前端域名中443端口的監(jiān)聽配置即可
server
{
listen 443 ssl;
server_name aaa.com;
ssl_certificate /etc/ssl/aaa.com.crt;
ssl_certificate_key /etc/ssl/aaa.com.key;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
# 這里是前端https站點的配置
location / {
proxy_pass http://ip:端口;
}
# 這里是轉(zhuǎn)發(fā)到另一個后臺http請求的配置,也可以直接用ip+端口
location /bbb-api/ {
proxy_pass http://bbb.com/;
}
}
我是 fx67ll.com,如果您發(fā)現(xiàn)本文有什么錯誤,歡迎在評論區(qū)討論指正,感謝您的閱讀!
如果您喜歡這篇文章,歡迎訪問我的 本文github倉庫地址,為我點一顆Star,Thanks~ :)
轉(zhuǎn)發(fā)請注明參考文章地址,非常感謝!!!