Linux nginx增加SSL支持

613 阅读2分钟

在Linux上自行编译Nginx后发现缺少SSL支持,可以通过以下步骤解决:


​一、检查现有Nginx是否支持SSL​
执行命令查看已编译的模块:

/usr/local/nginx/sbin/nginx -V  # 替换为实际安装路径

若输出中无--with-http_ssl_module,则需重新编译添加SSL模块。


​二、重新编译Nginx并添加SSL模块​
​步骤1:安装依赖库​
如果缺少OpenSSL开发包,需先安装:

yum install -y openssl openssl-devel  # CentOS/RHEL
# 或
apt-get install -y libssl-dev         # Ubuntu/Debian

若编译时仍报错OpenSSL not found,可能需要手动指定OpenSSL源码路径:

  1. 从官网下载对应版本的OpenSSL源码(如openssl-1.0.2k.tar.gz
  2. 解压到指定目录(例如/usr/local/src/openssl-1.0.2k
  3. 编译时添加参数--with-openssl=/path/to/openssl-source

​步骤2:重新配置编译参数​
进入Nginx源码目录,添加--with-http_ssl_module参数:

cd /path/to/nginx-source-code  # 例如/usr/src/nginx-1.20.2
./configure --prefix=/usr/local/nginx --with-http_ssl_module [其他原有参数]

• 若原有参数未知,可通过nginx -V输出的configure arguments获取。

​步骤3:编译并替换二进制文件​
仅编译不覆盖安装:

make  # 不要执行make install

完成后,替换原Nginx可执行文件:

# 备份原文件
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
# 替换为新编译文件
cp ./objs/nginx /usr/local/nginx/sbin/nginx

​三、验证SSL模块是否生效​

  1. 停止Nginx服务:

    /usr/local/nginx/sbin/nginx -s stop
    
  2. 重启并检查模块:

    /usr/local/nginx/sbin/nginx
    /usr/local/nginx/sbin/nginx -V  # 输出应包含--with-http_ssl_module
    

​四、补充说明​
• 无需卸载重装:仅需在原有基础上重新编译并替换文件。

• 建议在安装的时候就带上SSL的支持,避免出现这种情况。

通过以上步骤,可快速修复Nginx缺少SSL模块的问题。