# 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端口等问题。

上次更新: 2024/7/15 上午10:17:49