当前位置: 首页 > news >正文

http升级为https

http升级为https是在服务器端(不是在域名端),但要求被升级的域名已经被解析到此服务器

HTTP 升级为 HTTPS 的原理 : 在 HTTP 下面加了一层 SSL/TLS 加密层,把明文传输变成密文传输

1 申请并下载SSL证书(百度云服务器)

登录百度智能云控制台>> 搜索"SSL证书" >> 普通SSL证书

点击购买证书 >> 选择"域名型DV+单域名版+TrustAsia(免费)" >> 3个月(测试版) >> 购买

点击"证书申请" >> 填写需要升级的域名 >> 获得域名验证的TXT解析记录

● 主机记录(如 _dnsauth 或 _acme-challenge)

● 记录类型: TXT

● 记录值: 一串随机字符

域名验证: 登录域名DNS服务商(阿里云/腾讯云等) >> 找到该域名的DNS解析设置>> 添加对应的TXT解析记录

域名解析:将域名通过DNS解析指向服务器IP,一个域名可以同时解析到多个服务器IP(轮询,权重...)

ICP备案:域名第一次接入某厂商的云服务器需要做ICP备案,如果换了另一厂商的云服务器只需要做接入备案,一个厂商只需要做一次备案,以后再在此厂商买的云服务器(厂商相同,服务器公网IP不同)无需再做ICP备案或接入备案,只需要把域名解析改一下即可

复杂组合:域名是在阿里云买的,但是域名的DNS解析交给了腾讯云,服务器是百度云的,此时TXT解析记录就应该填写在腾讯云(而不是阿里云),(一般等10分钟生效)然后在百度云查看SSL证书是否申请成功

SSL证书申请成功后,在云服务器所在厂商(比如百度云)点击下载SSL证书(Nginx选PEM_Nginx),会得到一个压缩包:

包含了各种服务器软件(比如Nginx,Apache,Tomcat等)对应的证书(比如xxx.key和xxx_ca.crt)

包含了各种服务器软件上安装SSL证书的安装指南

2 放行云服务器安全组与防火墙

在安全组中放行443接口

3 上传证书并配置 Web 服务器(比如Nginx)

3.1 Nginx安装目录新建cert目录

如果是在docker中安装的Nginx,通过以下命令进入

docker exec -it nginx容器名 bash

创建cert目录

mkdir cert

3.2 将本地文件上传到cert目录

将本地文件上传到云服务器比较简单,一般shell工具自带此功能

如果要将本地文件上传到云服务器的docker容器中,可以先将本地文件上传到云服务器,在通过以下命令将云服务器的文件拷贝(见docker这篇文章)到docker容器中

docker cp /root/docker_nginx/cert/aboluo.xyz_ca.crt nginx_container_80:/cert docker cp /root/docker_nginx/cert/aboluo.xyz.key nginx_container_80:/cert

3.3 修改nginx.conf文件

docker容器中的目录/etc/nginx/nginx.conf,此时查看文件可能如下

并没有server{......},但最后一行已经说明了nginx.conf文件引入了/etc/nginx/conf.d目录下的所有以.conf结尾的文件,那我们继续去对应目录找,发现conf.d目录下只有一个default.conf文件,打开它

果然出现了server{......},继续改造default.conf文件:

server { listen 443 ssl http2; # 监听 443 端口并开启 SSL(推荐写法,替代ssl on),http2是http的升级 listen [::]:443 ssl http2; # 加上 IPv6 支持 (可选但推荐),http2是http的升级 server_name aboluo.xyz www.aboluo.xyz; # --- 证书路径必须是容器内的绝对路径 --- ssl_certificate /cert/aboluo.xyz_ca.crt; # 对应图中的 domain.crt ssl_certificate_key /cert/aboluo.xyz.key; # 对应图中的 domain.key # --- 安全设置 (图中示例比较旧,建议升级) --- ssl_protocols TLSv1.2 TLSv1.3; # 禁用旧的 TLSv1.1 ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; # --- 安全响应头 --- # 开启 HSTS,强制 HTTPS 一年(max-age单位"秒"),包含子域名 # 在max-age时间内,浏览器会强制记住“这个域名只能用 HTTPS,如果SSL过期访问http就会被拒绝,所以这个时间不要设置的过长 add_header Strict-Transport-Security "max-age=3600; includeSubDomains" always; # --- 站点配置 --- root /usr/share/nginx/html; index index.html index.htm; location / { try_files $uri $uri/ =404; } } # 专门处理 80 端口,强制跳转到 443(即http -> https) server { listen 80; server_name aboluo.xyz www.aboluo.xyz; return 301 https://$host$request_uri; }

但是进入nginx容器后,可以查看(cat命令)文件,但不能修改(vim命令)文件,所以可以使用docker cp命令将容器里面的default.conf拷贝到宿主机(拷贝成功后将容器里的default.conf删除掉),再从宿主机下载到本地,在本地修改好后上传到宿主机,再用docker cp命令将修改好的default.conf拷贝到nginx容器

或者直接在本地创建default.conf,然后相同的操作.......

3.4 重启nginx

重启nginx后,访问nginx里面的网址,如果网页时https开头的,表示升级HTTP 升级为 HTTPS成功

4 微服务接口支持https

完成对Nginx容器的改造后,访问Nginx容器中的网页确实是以https开头了,但网页访问微服务提供的接口依然是http,并且这种"网页https,但接口http"会被浏览器报错,因此需要对微服务接口做改造

4.1 改造原理

请求接口通过Nginx容器间接去请求微服务接口(或Gateway接口),而不是直接请求微服务接口(或Gateway接口),即:网页 >> Nginx >> Gateway >> 微服务.do接口,这样有个好处,就是网页和接口都走Nginx,SSL证书只需要在Nginx里面维护1份即可

4.2 改造Nginx

server { listen 443 ssl http2; # 监听 443 端口并开启 SSL(推荐写法,替代ssl on),http2是http的升级 listen [::]:443 ssl http2; # 加上 IPv6 支持 (可选但推荐),http2是http的升级 server_name aboluo.xyz www.aboluo.xyz; # --- 证书路径必须是容器内的绝对路径 --- ssl_certificate /cert/aboluo.xyz_ca.crt; # 对应图中的 domain.crt ssl_certificate_key /cert/aboluo.xyz.key; # 对应图中的 domain.key # --- 安全设置 (图中示例比较旧,建议升级) --- ssl_protocols TLSv1.2 TLSv1.3; # 禁用旧的 TLSv1.1 ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; # --- 安全响应头 --- # 开启 HSTS,强制 HTTPS 一年(max-age单位"秒"),包含子域名 # 在max-age时间内,浏览器会强制记住“这个域名只能用 HTTPS,如果SSL过期访问http就会被拒绝,所以这个时间不要设置的过长 add_header Strict-Transport-Security "max-age=3600; includeSubDomains" always; #静态资源优先匹配,正则location优先级高于location / location ~* \.(html|js|css|png|jpg|jpeg)$ { root /usr/share/nginx/html; } #专门处理访问根目录,读取本地index.html location = / { root /usr/share/nginx/html; index index.html index.htm; } # 所有接口转发到gateway容器:8080 location / { proxy_pass http://gateway_container_8080:8080; # gateway_container_8080为docker容器名 #proxy_pass http://123.123.123.123:8080; # Nginx和Gateway不在同一个云服务器 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 告诉网关,原始客户端请求协议是https proxy_set_header X-Forwarded-Proto $scheme; } } # 专门处理 80 端口,强制跳转到 443(即http -> https) server { listen 80; server_name aboluo.xyz www.aboluo.xyz; return 301 https://$host$request_uri; }

4.3 改造Gateway

配置gateway模块的bootstrap.yml,添加如下配置

spring: cloud: gateway: # 接受Nginx传过来的https,而不是http x-forwarded: enabled: true proto-enabled: true for-enabled: true host-enabled: true

4.4 改造微服务

配置微服务模块的bootstrap.yml,添加如下匹配值

server: forward‑headers‑strategy: native # 接受gateway传过来的https,而不是http

4.5 改造axios

axios的url不能写死为"http://aboluo.xyz:8080/aaa/xxx.do",应该修改为:

在本地启动: "http://localhost:8080/aaa/xxx.do"

在云服务器启动: "/aaa/xxx.do"

4.6 改造结果

改造好后,访问.do接口可以通过3种方式:

直接访问接口:http://aboluo.xyz:81/aaa/xxx.do

直接走Gateway:http://aboluo.xyz:8080/aaa/xxx.do

走Nginx,再间接走Gateway:https://aboluo.xyz/aaa/xxx.do

但是对于通过https访问网页的情况,浏览器不允许此网页"网页https,但接口http",因此只能"走Nginx,再间接走Gateway"

http://www.jsqmd.com/news/1352596/

相关文章:

  • VPKEdit:一站式跨平台游戏包文件管理终极指南
  • Mesen模拟器:重新发现NES游戏黄金时代的终极探索
  • 筑宅安房屋修缮|玉林防水补漏专业公司,解决梅雨季房屋渗水漏水 - 筑宅安
  • Oracle分区表模板化创建与性能优化实战
  • AI Agent技能安全审查实战:从代码扫描到运行时监控的完整指南
  • 义乌注册公司怎么选?财税托管服务机构推荐 - 行业深度分析
  • Unity编辑器扩展利器:Odin Inspector与序列化器深度解析与应用
  • Windows右键菜单优化:删除重复PDF转换选项
  • 做 excel 表格用哪个千问软件文档导出,AI 导出鸭一站式适配各类千问内容导出 Excel,高效稳定更省心
  • 如何高效激活Windows和Office:KMS智能激活工具完全指南
  • 2026年8月南京玄武防水补漏维修实测攻略|同城上门勘测施工、屋面外墙厨卫地下室防渗服务实测 - 超人防水
  • KMS智能激活工具终极指南:5分钟永久激活Windows和Office的完整解决方案
  • RedisDesktopManager Windows版:5个简单步骤掌握免费Redis可视化工具
  • 从FNF模组生态看用户创作:工具民主化与社区驱动的创新模式
  • 魔兽争霸3兼容性修复终极指南:如何在Windows 11上完美运行经典游戏
  • 中望3D2026曲率图功能解析与应用实践
  • 解决C++插件安装未生效的常见问题与调试技巧
  • Markdown Viewer终极指南:在浏览器中完美预览Markdown文件的完整解决方案
  • 从使用者到创造者:手把手教你打造专属AI技能(Skill)
  • Linux系统服务管理:systemctl命令详解与实战
  • 如何通过浏览器脚本彻底改造你的B站体验:Bilibili-Evolved终极指南
  • 报班前必看!拆解头部插画机构,谁才是真正的“商业实战”之王? - 滚动商讯
  • WeChatMsg:如何高效备份微信聊天记录并生成智能年度报告
  • AI搜索优化: 如何将企微主动群调用打造为高质量语义源
  • 2026 北京空气检测甲醛治理,厂房装修后空气质量该怎么把控 - LYL仔仔
  • 解析器能力扩展_analysis-api-extend-ka-resolver
  • 微信小程序bindtap事件传参全解析:从data-*原理到实战避坑
  • 2025终极黑苹果指南:从零构建稳定macOS系统的完整解决方案
  • 0纸张、0泄密、100%自研:itc保伦股份无纸化会议系统助力济宁行政审批服务中心打造智慧政务新范式
  • Excel数据透视表:从多维汇总到动态分析的全能指南