# Linux 下 Nginx 配置 SSL 报 "ssl parameter requires ngx_http_ssl_module" 错误
在 Linux 操作系统下使用 Nginx 配置 SSL 证书,nginx.conf 配置如下:
server {
listen 443 ssl;
server_name www.mysite.com;
ssl_certificate /usr/local/nginx/conf/cert/www.mysite.com.pem;
ssl_certificate_key /usr/local/nginx/conf/cert/www.mysite.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
}
其中,www.mysite.com
是 SSL 证书对应的域名名称。
重启 Nginx后,如果报错:
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:240
说明 Nginx 的ssl模块未安装,需要在已安装的 Nginx 中添加 http_ssl_module 模块。
# 重新编译 Nginx 并开启SSL模块
我们需要下载 Nginx 源码并重新编译,以 Nginx 1.16.1为例:
## 切换到源码路径
cd /usr/src
## 下载并解压 Nginx 源码
wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar -xzf nginx-1.16.1.tar.gz
## 重新编辑 Nginx 并开启SSL模块
cd nginx-1.16.1
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make
# 替换 Nginx 并重启服务
接下来,我们需要将重新编译好的Nginx替换现有系统并重新启动:
## 备份 Nginx 命令
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
## 强制停止 Nginx
pkill -9 nginx
## 将刚刚编译好的nginx覆盖掉原有的nginx
cp ./objs/nginx /usr/local/nginx/sbin/
## 重启Nginx
systemctl start nginx
至此,Nginx 应该不会再出现"ssl parameter requires ngx_http_ssl_module" 错误提示了,如果HTTPS方式访问网站仍未起作用,需要进一步查看防火墙以及网络443端口等问题。