网站从http升级为https
过程记录
https网站解决block:mixed-content问题
- 问题定位:前端升级为https,前端发出请求链接也应升级为https。不然会报出block:mixed-content。
- 解决问题:
- 简单解决方法:把后端的链接都改为https;
- 页面的head中加入:
功能是自动将http的不安全请求升级为https
https网站请求出错:NET::ERR_CERT_COMMON_NAME_INVALID
前端第一次调用跨越的https的不同链接,遇到不安全的证书的时候,就会报这个错误。
![a91216dd15779a5db88fe4fb19636e08.png](https://img-blog.csdnimg.cn/img_convert/a91216dd15779a5db88fe4fb19636e08.png)
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的包信息
- 下载下来,然后修改下配置就行。