全部版块 我的主页
论坛 数据科学与人工智能 IT基础 Linux操作系统
86 0
2025-11-13

文章目录

  1. 需求
  2. 准备工作
  3. 具体步骤
    • 查询本地ip是否开放443端口
    • 在安全组配置开放443端口
    • 在防火墙开放443端口
  4. 安装SSL证书到Nginx
    • 安装到本地nginx
    • 部署到nginx

1. 需求

近来客户请求网站使用https协议,因此撰写了本文。

2. 准备工作

  • 云服务器–这里采用的是阿里云的云服务器
  • SSL证书–这里演示个人测试证书
  • xshell
  • PC一台

3. 具体步骤

  1. 购买个人测试证书

    个人测试证书购买链接

  2. 上传文件到服务器上

    将获取的证书文件上传至服务器,存放在一个安全的外部目录(/etc/ssl/cert)。

  3. 测试本地系统类型

    命令: cat /etc/os-release

    这里显示的是:

  4. 开放服务器443端口
    1. 查询本地ip是否开放443端口
      command -v nc > /dev/null 2>&1 || sudo apt-get install -y netcat
      sudo ss -tlnp | grep -q ':443 ’ || sudo nc -l -p 443 & sleep 1; nc -w 3 -vz <当前服务器的公网 IP> 443
    2. 在安全组配置开放443端口

      进入云服务器ECS实例,点击目标实例名称进入实例详情页面,参考添加安全组规则,在安全组中增加一条授权策略为允许,协议类型为TCP,目的端口范围为HTTPS(443),授权对象为任意位置(0.0.0.0/0)的规则。

    3. 在防火墙开放443端口

      执行以下命令,识别系统当前的防火墙服务类型

      if command -v systemctl >/dev/null 2>&1 && systemctl is-active --quiet firewalld; then
      echo "firewalld"
      elif command -v ufw >/dev/null 2>&1 && sudo ufw status | grep -qw active; then
      echo "ufw"
      elif command -v nft >/dev/null 2>&1 && sudo nft list ruleset 2>/dev/null | grep -q 'table'; then
      echo "nftables"
      elif command -v systemctl >/dev/null 2>&1 && systemctl is-active --quiet iptables; then
      echo "iptables"
      elif command -v iptables >/dev/null 2>&1 && sudo iptables -L 2>/dev/null | grep -qE 'REJECT|DROP|ACCEPT'; then
      echo "iptables"
      else
      echo "none"
      fi

      若输出为none,则无需进一步操作,否则,请根据输出的类型(firewalld, ufw, nftables, iptables),执行以下命令开放443端口:

      sudo firewall-cmd --permanent --add-port=443/tcp && sudo firewall-cmd --reload

4. 安装SSL证书到Nginx

  1. 安装到本地nginx

    上传pem, key文件至/etc/ssl/cert目录下。

    为Nginx安装SSL模块,若输出–with-http_ssl_module则说明已经安装SSL模块,无需再次安装

    nginx -V 2>&1 | grep -o -- '--with-http_ssl_module'

    如果出现 nginx: command not found,请根据Nginx的实际安装路径(如:/usr/local/nginx/sbin/nginx -V...)

    请根据Nginx的安装方式(编译安装或包管理工具安装)。选择对应的SSL模块安装方法:

  2. PS:在升级Nginx过程中,Nginx服务可能会短暂中断,影响线上业务;务必提前备份所有Nginx配置文件和站点数据,并选择业务低峰期操作,完成升级后及时恢复配置并验证服务正常。

安装Nginx方式1—利用包管理工具:

编译安装

b. 查看当前Nginx编译参数

nginx -V

记录configure arguments:后的所有参数,后续重新编译时需要全部保留。

c. 下载与当前 Nginx 版本相符的源码包

运行 nginx -v 查看当前 Nginx 版本

具体可以参考官方手册操作即可

官方手册

4.2 部署到 Nginx

本文路径文件夹

因此,修改 docker-compose.yml 配置文件路径:

version: "3.8"
services:
  nginx:
    image: nginx:alpine
    container_name: nginx-static
    ports:
      - "80:80"   # HTTP 用于跳转 HTTPS
      - "443:443" # HTTPS 主要端口
    volumes:
      - /root/PAPER/nginx/nginx.conf:/etc/nginx/nginx.conf:ro  # 挂载配置文件
      - /root/PAPER:/usr/share/nginx/html:ro  # 挂载网页根目录(/PAPER → 容器内 /usr/share/nginx/html)
      - /root/PAPER/datasets:/usr/share/nginx/html/datasets:ro  # 挂载数据集目录(/PAPER/datasets → 容器内 /usr/share/nginx/html/datasets)
      - /root/PAPER/nginx/var/log/nginx:/var/log/nginx  # 挂载日志目录
      - /etc/ssl/cert:/etc/nginx/ssl  # 挂载证书目录
    restart: unless-stopped
    

接着进入 Nginx 配置文件

cd nginx
vim nginx.conf
    

修改配置文件为:

worker_processes auto;
events {
  worker_connections 1024;
}
http {
  include       /etc/nginx/mime.types;
  default_type  application/octet-stream;
  sendfile        on;
  keepalive_timeout  65;

  # ===== HTTPS 服务器块 =====
  server {
    listen 443 ssl;
    server_name blogcenter.top;

    # 证书配置(容器内路径,与 docker-compose 挂载一致)
    ssl_certificate /etc/nginx/ssl/blogcenter.top.pem;
    ssl_certificate_key /etc/nginx/ssl/blogcenter.top.key;

    # 网页根目录:/index.html 直接在 /PAPER 下
    location / {
      root   /usr/share/nginx/html;
      index  index.html;
      try_files $uri $uri/ /index.html;  # 解决单页应用刷新 404
    }

    # 数据集目录:/datasets 直接在 /PAPER 下
    location /datasets/ {
      root   /usr/share/nginx/html;
      autoindex off;
      sendfile on;
      tcp_nopush on;
      tcp_nodelay off;
    }
    error_page 500 502 503 504  /50x.html;
    location = /50x.html {
      root   /usr/share/nginx/html;
    }
  }

  # ===== HTTP 自动跳转 HTTPS =====
  server {
    listen 80;
    server_name blogcenter.top;
    return 301 https://$host$request_uri;
  }
}
    

最后启动 Nginx 服务器:

docker compose up -d

各位老板,创作不易,点点关注~

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群