centos8 nginx 开启 ssl(https)
- 首先申请证书,以阿里云为例
- centos8 nginx 安装 ssl
- nginx 配置文件
- 遇到问题
一直没有给域名开启 https,在 Cesium 沙盒模拟中使用 http 资源会提示错误,于是想着把 https 打开,记录一下过程。
尤其是 阿里云的坑 和过程问题。
首先申请证书,以阿里云为例
1. 登陆阿里云,进入工作台,点击左上角,选择域名。
2. 点击域名列表进入域名页面
3. 选择要操作的域名,点击管理
4. 在基本信息选项卡下,点击右侧开启SSL证书
5. 注意:阿里云会诱导你购买证书,千万不要上当,别理就好。
点击左侧选项卡-SSL证书
6. 注意:这里阿里云还是诱导花钱,不用理。
点击免费证书选项卡
7. 注意:免费证书是真的免费,只是显示需要购买,点击立即购买(这里阿里云是让你误以为要花钱,从而想跳转到其他页面;实际花费为 0)
8. 选择已创建的证书,点击证书申请
9. 这里主要填写域名和其他信息
10. 验证,提交审核,大概一分钟即可审核完成
11. 审核通过,点击下载
13. 选择合适证书下载,本文以 nginx 为例
PS:阿里云为了让人花钱真是费尽心机,笔者也差点上当!!!
centos8 nginx 安装 ssl
进入 nginx 安装目录,依次执行:
./configure --prefix=/usr/local/nginx --with-http_ssl_module
make
make install
nginx 配置文件
增加 nginx 配置文件:
# 添加https server
server {
# 监听443端口,开始 ssl
listen 443 ssl;
# 域名
server_name www.openlayers.vip openlayers.vip;
# 证书路径
ssl_certificate /usr/local/nginx/conf/8953644_www.openlayers.vip.pem; # 这个目录需要替换成你自己证书的存放目录
ssl_certificate_key /usr/local/nginx/conf/8953644_www.openlayers.vip.key; # 这个目录需要替换成你自己证书的存放目录
#SSL-END SSL相关配置
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;
#下面这些配置跟原本http的server里面的一样就可以了
location / {
}
}
使用 curl 测试:curl https://openlayers.vip/,返回信息即可,如:
遇到问题
1. 首先是 nginx 缺少 SSL 模块错误
上来就配置 nginx,结果报错,提示很明显,就是没安装 SSL 模块,完整错误:
nginx报错:nginx: [emerg] the “ssl“ parameter requires ngx_http_ssl_module in /project/api/nginx.conf:
解决方式:安装即可。
2. 安装 SSL 后 Gzip 模块被清除
由于已经安装配置 gzip,这里不知道为何,会覆盖掉,只有安装 ssl,gzip 就会被删掉,安装 gzip,ssl 也会被删掉。
错误信息:unknown directive “gzip_static“
解决办法,同时安装两个模块:
./configure --prefix=/usr/local/nginx --with-http_gzip_static_module --with-http_ssl_module
3. nginx 未重启导致443端口不生效
PS: 443端口,使用 nginx -s reload 是不生效的,需要重启 nginx。
这个问题浪费不少时间,各种搜索无果,后台偶然发现一博客说是没重启 nginx 的原因,尝试之后,果然如此!
4. 443 端口未开启防火墙
在试错过程中,发现 curl 443 一直不通,以为是 443 端口没有开启防火墙,通过命令开启 443 端口。
firewall-cmd --permanent --list-port
firewall-cmd --zone=public --add-port=443/tcp --permanent
5. 防火墙未开启
但是在使用 firewall-cmd 命令的时候提示错误:FirewallD is not running。
也就是未开启防火墙,打开即可:
systemctl start firewalld # 开启防火墙
systemctl stop firewalld # 关闭防火墙
systemctl status firewalld # 查看防火墙状态
6. 缺少 six.py 错误
在打开防火墙的时候,遇到错误:No module named 'six'
下载centos8.2 six.py 文件 即可。
参考博客:
Linux 命令详解(三)./configure、make、make install 命令
Nginx gzip压缩扩展模块 ngx_http_gunzip_module ngx_http_gzip_static_module
Centos8 firewall-cmd命令报错
linux出现 FirewallD is not running
nginx报错:nginx: emerg the “ssl“ parameter requires ngx_http_ssl_module in /project/api/nginx.conf:
unknown directive “gzip_static“ 解决
困扰我两天的问题(nginx配置好ssl证书,https却不能访问)
nginx 怎么都启动不了443端口的奇怪现象
Nginx挂载ssl证书开启HTTPS访问网站
Centos8 firewall-cmd命令报错