要让 Nginx 支持处理 HTTPS 请求,主要步骤包括获取 SSL 证书以及修改 Nginx 的配置文件。

一、获取 SSL 证书

SSL 证书可以通过以下方式获取:

  1. 免费证书‌:可以从 Let's Encrypt 等免费证书颁发机构获取。Let's Encrypt 提供了免费的 SSL 证书,并且支持自动续期。
  2. 商业证书‌:可以从阿里云、腾讯云等商业证书颁发机构购买。商业证书通常提供更高级别的安全性和支持。

二、修改 Nginx 配置文件

  1. 打开配置文件‌:Nginx 的配置文件通常位于 /etc/nginx/nginx.conf 或 /etc/nginx/sites-available/default。使用文本编辑器打开该文件。

  2. 配置 HTTPS 服务器块‌:在配置文件中添加一个 HTTPS 服务器块。示例如下:

    server {
        listen 443 ssl;  # 监听 443 端口,启用 SSL
        server_name your_domain_or_IP;  # 替换为你的域名或 IP 地址
    
        ssl_certificate /path/to/your/certificate.crt;  # 证书文件路径
        ssl_certificate_key /path/to/your/certificate.key;  # 私钥文件路径
    
        ssl_protocols TLSv1.2 TLSv1.3;  # 支持的 SSL/TLS 协议版本
        ssl_ciphers HIGH:!aNULL:!MD5;  # 加密套件
    
        location / {
            root /var/www/html;  # 网站根目录
            index index.html;  # 默认首页文件
        }
    }
    

  3. 配置 HTTP 重定向到 HTTPS‌:为了确保所有用户都通过 HTTPS 访问网站,可以配置 HTTP 重定向。示例如下:

    server {
        listen 80;  # 监听 80 端口
        server_name your_domain_or_IP;  # 替换为你的域名或 IP 地址
    
        return 301 https://$host$request_uri;  # 将 HTTP 请求重定向到 HTTPS
    }
    

三、测试配置并重启 Nginx

  1. 测试配置‌:在保存配置文件后,使用以下命令测试配置文件的语法是否正确:

    nginx -t

    如果配置文件有错误,终端会显示错误信息,请根据提示进行修正。

  2. 重启 Nginx‌:如果配置文件语法正确,使用以下命令重启 Nginx 服务以应用更改:

    sudo systemctl restart nginx

四、验证 HTTPS 是否生效

  1. 浏览器访问‌:在浏览器中访问你的网站,查看是否已经启用了 HTTPS。如果启用了 HTTPS,浏览器地址栏会显示一个绿色的锁头图标。
  2. 在线工具检测‌:可以使用在线工具(如 SSL Labs)来检测你的 SSL 配置是否安全、有效。

五、注意事项

  1. 证书路径‌:确保证书文件路径正确,并且 Nginx 进程有读取证书的权限。
  2. 安全组设置‌:确保服务器的安全组或防火墙规则允许 443 端口的入站流量。
  3. 证书续期‌:如果是使用 Let's Encrypt 等免费证书,需要定期续期证书以确保网站持续安全地运行。

Let"s Encrypt证书自动续期

Let's Encrypt 证书可以通过多种方式实现自动续期,以下是详细步骤和说明:

一、使用 Certbot 自动续期

Certbot 是 Let's Encrypt 官方推荐的客户端工具,它可以帮助你自动申请和续期证书。

  1. 安装 Certbot‌:

    • Ubuntu/Debian‌:

      sudo apt update sudo apt install certbot

    • CentOS/RHEL‌:

      sudo yum install epel-release sudo yum install certbot

    • 其他操作系统可以参考 Certbot 官网进行安装。
  2. 获取证书‌:

    安装好 Certbot 后,你可以通过以下命令获取证书(以 Nginx 为例):

    sudo certbot --nginx

    此命令将自动为你的 Nginx 服务器配置 SSL 证书。

  3. 配置自动续期‌:

    Let's Encrypt 的证书有效期为 90 天,但 Certbot 可以自动为你续期证书。默认情况下,Certbot 会在 Linux 系统中创建一个定时任务,自动在证书过期前 30 天进行续期。你可以通过以下命令检查定时任务是否已经存在:

    sudo systemctl list-timers

    如果没有看到相关的续期任务,可以手动设置一个定时任务。使用以下命令编辑 crontab:

    sudo crontab -e

    然后在 crontab 中添加以下行,每天凌晨 1 点自动执行证书续期:

    0 1 * * * certbot renew --quiet

    这将确保 Certbot 每天检查一次证书是否需要续期,如果需要,它会自动续期而不打扰你。

  4. 验证续期是否成功‌:

    为了确保自动续期配置正确,可以手动模拟一次续期过程,确保一切正常:

    sudo certbot renew --dry-run

    该命令会模拟一个续期过程,但不会实际更换证书。

二、使用宝塔面板自动续期

如果你使用的是宝塔面板,也可以通过宝塔面板实现 Let's Encrypt 证书的自动续期。

  1. 手动续签‌:

    在宝塔面板中,点击网站设置后台的【SSL】》【Let's Encrypt】》【续签】。点击续签之后,自动开始 Let's Encrypt 免费证书的续签。

  2. 自动续签‌:

    宝塔面板还提供了计划任务功能,可以自动续签 Let's Encrypt 证书。在宝塔面板后台,点击【计划任务】,然后添加一条 Shell 脚本任务。

    • 任务名称‌:可以任意填写。
    • 执行周期‌:可以设置为每天。
    • 脚本内容‌:填入以下脚本:

      /www/server/panel/pyenv/bin/python /www/server/panel/class/acme_v2.py --renew=1

    • 最后点击【添加任务】即可。

三、注意事项

  1. 防火墙设置‌:

    确保服务器的防火墙或安全组规则允许 80 和 443 端口的入站流量,以便 Certbot 可以进行域名验证和证书续期。

  2. 域名解析‌:

    在申请证书或续期前,确保域名已正确解析到服务器 IP 地址。

  3. 定期检查‌:

    建议定期检查证书续期状态,以确保网站始终保持 HTTPS 安全连接。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐