Skip to content

Nginx支持https(部署ssl证书)

记一次腾讯云部署域名支持https的故障排查问题。

nginx部署

部署见上一篇文章nginx_link

支持ssl

由于上一次云部署采用源码编译的方式,虽然安装上了nginx,但是忘了启用ssl模块。 本次重新安装,支持ssl.

  • 1.下载nginx版本nginx_version

  • 2.解压版本并执行安装操作

// 解压
tar -zxvf nginx-1.24.0.tar.gz
//进入解压目录
cd nginx-1.24.0/
  • 3.ssl模块配置
./configure --with-http_ssl_module
  • 4.安装
//安装
make
sudo make install
  • 5.确认ssl已经安装上
nginx -V 2>&1 | grep -o ssl  //可以看到`ssl`的打印

腾讯云部署ssl

部署ssl的过程大致上是: 下载证书 > 上传到云服务器nginx路径下 > 配置nginx.conf > 重启nginx

  • 下载ssl证书ssl_cer
  • 上传。自行用FTP工具,scp,宝塔面板都可以
  • 配置nginx.conf

//编辑nginx.conf文件
sudo vi /usr/local/nginx/conf/nginx.conf
//增加一个ssl server块
server {
    listen 443 ssl;
    server_name a.b.com; #填写您的证书绑定的域名,例如:www.cloud.tencent.com
    ssl_certificate /usr/local/nginx/conf/ssl_cer/com.a.b/a.b.com_bundle.crt;
    ssl_certificate_key /usr/local/nginx/conf/ssl_cer/com.a.b/a.b.com.key;
    ssl_session_timeout 1d;
    ssl_session_cache    shared:SSL:50m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;  # 可参考此 SSL 协议进行配置
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;   #可按照此加密套件配置,写法遵循 openssl 标准
    ssl_prefer_server_ciphers on;
    location / {
        root /xxx/your/project/web;
        index index.html;
    }
}

//http 内增加一个
http {
    ssl_certificate /usr/local/nginx/conf/ssl_cer/com.a.b/a.b.com_bundle.crt;
    ssl_certificate_key /usr/local/nginx/conf/ssl_cer/com.a.b/a.b.com.key;
}
  • 配置项目的http301到https
   server {
       listen 80;
       server_name a.b.com; # 替换为您的域名或IP地址
       return 301 https://$host$request_uri;     #主要是这一句。将http的域名请求转成https
       location / {
           root /xxx/your/project/web; # Vue项目构建后的输出目录
           index index.html;
           #proxy_pass http://127.0.0.1:6699;
           try_files $uri $uri/ /index.html; # 用于SPA路由
       }

       location /api {
           proxy_pass http://127.0.0.1:6688;
        }
   }
  • 验证及重启nginx
sudo nginx -t
sudo systemctl restart nginx

如果正常没意外的话,已经可以实现https访问。

https访问不了页面

如无意外的话,意外就来了。由于在轻量服务器上,看到443端口已经放行。错误的以为本地已经启用了443端口,在这一步卡了大半天。

  • 检查本地是否有443端口 最终定位到是443没开启
//查看443是否存在
ss -tuln | grep 443  //这里输出为空。

所以接下来通过防火墙启动443. 如果防火墙没有启动,您可以通过以下步骤来启动它并开放443端口:

  1. 启动防火墙:执行以下命令以启动防火墙:

    sudo systemctl start firewalld
  2. 设置防火墙开机启动:如果您希望防火墙在系统重启后仍然处于启动状态,可以执行以下命令:

    sudo systemctl enable firewalld
  3. 开放443端口:执行以下命令以允许443端口的流量通过防火墙:

    sudo firewall-cmd --zone=public --add-port=443/tcp --permanent

    这将在防火墙配置中永久添加443端口。

  4. 重新加载防火墙配置:执行以下命令以重新加载防火墙配置,使更改生效:

    sudo firewall-cmd --reload
  5. 确认端口是否已打开:您可以运行以下命令来确保443端口已经打开:

    sudo firewall-cmd --list-all

上次更新于: