记录将网站从http升级https

发布于:2025-05-28 ⋅ 阅读:(24) ⋅ 点赞:(0)

http与https

你知道http是什么吗,那你知道https吗?在进行升级之前我们应该都听说http不安全,要用https,那你知道这是为什么吗?

什么是http?

HTTP 是超文本传输协议,也就是HyperText Transfer Protocol。是一种在计算机之间传输超文本的一种约定与规范。

  • 超文本:文字、音乐、图片、视频、HTML文件等
  • 传输:可以在两者之间互相传递数据
  • 协议:一个在计算机之间通信的一种规范。

http状态码

分类 状态码 含义 典型场景
1xx 信息性 100 服务器已接收请求第一部分,客户端可继续发送剩余部分 上传大文件时分段发送请求体
101 服务器切换协议(如 HTTP → WebSocket) 客户端请求升级协议(如 WebSocket 连接)
2xx 成功 200 请求成功,返回正常响应内容 常规接口调用成功(如获取数据、查询操作)
201 请求成功并创建新资源 用户注册、文件上传成功后返回新资源 URL
202 服务器已接受请求,但尚未完成处理(异步操作) 提交后台任务(如批量数据处理)
204 请求成功但无响应内容 删除资源后无需返回数据
206 成功处理范围请求,返回部分资源 视频分片下载、大文件断点续传
3xx 重定向 301 资源永久重定向至新 URL 域名变更(如旧域名永久跳转到新域名)
302/307 资源临时重定向至新 URL 表单提交后跳转至结果页面(避免重复提交)
303 请求响应需跳转到另一个 URL(常用于 POST → GET 跳转) POST 请求后返回 GET 结果页面(如提交表单后显示详情页)
304 资源未修改,直接返回缓存内容 客户端携带缓存标识(如 If-None-Match)请求静态资源
4xx 客户端错误 400 客户端请求语法错误或参数无效 发送无效 JSON 格式、缺少必填参数
401 未授权(需身份验证) 未提供 Token、Token 过期或无效
403 禁止访问(已认证但无权限) 用户无权限访问资源(如普通用户尝试访问管理员页面)
404 资源不存在 URL 路径错误、资源已删除
405 不支持请求方法 对仅支持 GET 的接口发送 POST 请求
413 请求体过大 上传文件超过服务器限制大小
414 URI 过长 请求的 URL 地址超出服务器处理范围
429 请求频率过高(触发限流) 短时间内多次调用接口(如恶意攻击或未作限流控制)
5xx 服务器错误 500 服务器内部未知错误 代码异常、数据库连接失败、配置错误
502 网关错误(上游服务器响应无效) 代理服务器(如 Nginx)无法获取后端服务的正常响应
503 服务不可用(临时维护或过载) 服务器停机维护、并发量过高导致崩溃
504 网关超时(上游服务器响应超时) 后端服务处理缓慢,代理服务器等待超时

为什么有https?

由于Http是明文传输,存在安全风险。

  • 容易被窃听
  • 容易被篡改
  • 容易被冒充
    所以需要Https来保证传输过程的安全性,Https在Http与TCP层之间加入了SSL/TLS协议,来解决Http存在的安全风险。

Https是如何保证安全的?

  • 混合加密——>窃听
  • 摘要算法——>完整性
  • 数字证书——>冒充

1.混合加密
Https采用的是对称加密和非对称加密的结合方式:

  • 在通信建立前采用非对称加密的方式交换「会话秘钥」,后续就不再使用非对称加密。
  • 在通信过程中全部使用对称加密的「会话秘钥」的方式加密明文数据。
  1. 数字签名
    为了保证传输的内容不被篡改,我们需要对内容计算出一个「指纹」(用摘要算法(哈希函数)来计算出内容的哈希值),然后同内容一起传输给对方,接收方接收到之后采用同样的方法得到🫆,和发送方的指纹对比。但是存在一个问题如果指纹和内容都被替换了,这个方法不就失效了。所以我们需要通过非对称加密(一个公钥(公开),一个私钥(私有)算法来解决这个问题。
  • 公钥加密,私钥解密。这个目的是为了保内容传输的安全。
  • 私钥加密,公钥解密。这个目的是为了保证消息不会被冒充。
  1. 数字证书
    保证公私钥不会被替换,由第三人CA数字认证机构颁发。数字证书是由权威证书颁发机构(CA)签发的电子文件,用于证明通信实体(如服务器、用户)的身份合法性,并安全传递公钥以保障网络通信的加密性和数据完整性。

http和https有什么不同?

HTTP 与 HTTPS 的对比总结表格:

对比项 HTTP HTTPS
全称 超文本传输协议(HyperText Transfer Protocol) 超文本传输安全协议(HyperText Transfer Protocol Secure)
端口 默认 80 默认 443
安全性 明文传输,不安全 加密传输(SSL/TLS 层),安全
加密层 基于 SSL/TLS 协议
证书要求 无需 CA 证书 需要 CA 颁发的数字证书(服务器验证)
URL 前缀 http:// https://
默认情况 传统网站常用 现代网站默认启用(尤其涉及隐私数据场景)
性能影响 无加密开销,速度更快 存在加密/解密开销,可能稍慢(可通过 TLS 1.3 优化)
SEO 友好性 无特殊优势 搜索引擎(如 Google)优先索引
适用场景 公开信息浏览(如新闻、静态页面) 敏感数据传输(如登录、支付、个人信息)
协议层级 应用层协议 应用层协议(基于传输层 SSL/TLS 封装)
信任机制 无服务器身份验证 通过数字证书验证服务器身份

网站从http升级为https

SSL证书申请

  1. 先申请一个SSL证书,就是前面提到的数字证书,可以从FreeSSL申请一个免费的证书,按照教程操作即可。
  2. 申请过程中会要求将主机记录值添加到域名解析当中进行验证。
  3. 验证通过之后下载证书

安装证书

将解压后的证书文件都上传到服务器Nginx的conf目录下的cert目录下,如果没有cert,则自己新建一个即可。

配置nginx.conf,使证书生效

修改nginx.conf文件
在这里插入图片描述

server {
        listen       443 ssl;
        server_name  yuhaohub.cn;

        ssl_certificate      cert/full_chain.pem;
        ssl_certificate_key  cert/private.key;

        ssl_session_timeout  5m;
        ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers  on;

        root /var/www-data/yhxtapi;
        index index.html index.php;
        location / {
            # 建议添加默认代理规则或索引页处理
            try_files $uri $uri/ /index.php$is_args$args;
        }

        # 可选:添加 PHP 解析规则(若有动态页面)
        # location ~ \.php$ {
        #     fastcgi_pass unix:/run/php/php-fpm.sock;
        #     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #     include fastcgi_params;
        # }
    }

重载Nginx配置

# 平滑重启(不中断服务)
nginx -s reload

注意事项

如果你的项目使用了 axios 等 HTTP 客户端,建议在全局配置中统一处理 API 域名:
// 创建axios实例时设置baseURL
const instance = axios.create({
  baseURL: '/', // 相对路径,自动使用当前协议
  // 或显式指定HTTPS
  // baseURL: 'https://yuhaohub.cn/'
});

// 然后使用实例发送请求
instance.get('/api/notice/pull');

网站升级成功

在这里插入图片描述

小结

在升级过程会碰到各种问题,大家耐心解决就行,最关键的Nginx的配置文件编写问题,大家细心一点就好了。


网站公告

今日签到

点亮在社区的每一天
去签到