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端口:
启动防火墙:执行以下命令以启动防火墙:
sudo systemctl start firewalld
设置防火墙开机启动:如果您希望防火墙在系统重启后仍然处于启动状态,可以执行以下命令:
sudo systemctl enable firewalld
开放443端口:执行以下命令以允许443端口的流量通过防火墙:
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
这将在防火墙配置中永久添加443端口。
重新加载防火墙配置:执行以下命令以重新加载防火墙配置,使更改生效:
sudo firewall-cmd --reload
确认端口是否已打开:您可以运行以下命令来确保443端口已经打开:
sudo firewall-cmd --list-all