当前位置: 首页 > article >正文

在 CentOS 7.9 上编译 Nginx 并启用 SSL 模块时遇到缺少 OpenSSL 源码的编译问题及解决方案

文章目录

  • 问题描述
  • 问题原因
  • 解决方案
    • 步骤 1:安装 OpenSSL 源码
    • 步骤 2:清理 Nginx 编译缓存
    • 步骤 3:编译和安装 OpenSSL
    • 步骤 4:重新配置 Nginx
    • 步骤 5:编译和安装 Nginx
    • 步骤 6:检查 Nginx 是否成功启动
    • 步骤 7:配置 Nginx SSL
    • 步骤 8:重启 Nginx
  • 总结

在 Linux 系统上,Nginx 是一个高效的 Web 服务器和反向代理服务器。安装和配置 Nginx 时,启用 SSL 模块是确保数据传输安全的关键步骤。然而,在某些情况下(尤其是在 CentOS 7.9 上),你可能会遇到 Nginx 编译过程中提示缺少 OpenSSL 源码的错误。直接安装 OpenSSL 并不能解决问题,必须从源码编译 OpenSSL。下面,我们将详细讲解如何解决这个问题,确保 Nginx 在启用 SSL 模块的情况下顺利编译和运行。

问题描述

在 CentOS 7.9 上编译 Nginx并启用 SSL 模块(./configure --with-http_ssl_module ) 时,如果未正确配置 OpenSSL,通常会遇到以下错误:

make: *** [objs/Makefile] Error 127

具体错误信息为:

/bin/sh: line 2: ./config: No such file or directory

这表明 OpenSSL 的编译脚本未找到,Nginx 编译时无法正确加载 OpenSSL 的配置文件。

问题原因

  1. OpenSSL 没有正确安装
    在 Nginx 编译时,必须提供 OpenSSL 的源码路径。直接安装 OpenSSL 包并不能为 Nginx 提供所需的源码文件,而是需要下载和编译 OpenSSL 源码。

  2. 缺少 OpenSSL 的源码路径
    Nginx 编译时需要 OpenSSL 的源码目录,而不是只是安装的动态库路径。因此,必须指定 OpenSSL 的源码路径。

解决方案

下面我们将分步骤解决问题。

步骤 1:安装 OpenSSL 源码

首先,确保下载并解压 OpenSSL 源码包。以 OpenSSL 1.0.2u 为例,执行以下命令:

cd /usr/local
tar -xzvf /path/to/openssl-1.0.2u.tar.gz
cd /usr/local/openssl-1.0.2u

确保解压后的目录中包含 config 文件和其他源码文件。

步骤 2:清理 Nginx 编译缓存

如果之前已经尝试过编译 Nginx,但由于缺少 OpenSSL 源码而失败,最好先清理编译缓存。进入 Nginx 源码目录,执行以下命令:

cd /usr/local/nginx-1.26.2
make clean

这将清除 Nginx 之前的编译缓存,确保从干净的状态开始编译。

步骤 3:编译和安装 OpenSSL

/usr/local/openssl-1.0.2u 目录下,使用以下命令配置 OpenSSL:

./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
make
make install

#安装完成后,检查 OpenSSL 的版本是否正确:
/usr/local/openssl/bin/openssl version

这将会安装 OpenSSL 到 /usr/local/openssl 目录。

同时也可以更新系统环境变量:

/usr/local/openssl/bin 添加到系统的 PATH 中,以确保系统优先使用新版本的 OpenSSL:

  1. 打开环境变量配置文件:

    vi /etc/profile
    
  2. 在文件末尾添加以下内容:

    export PATH=/usr/local/openssl/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/openssl/lib:$LD_LIBRARY_PATH
    
  3. 保存并生效:

    source /etc/profile
    

验证:

openssl version

步骤 4:重新配置 Nginx

在重新配置 Nginx 时,需要指定正确的 OpenSSL 源码路径。进入 Nginx 源码目录,执行以下命令:

cd /usr/local/nginx-1.26.2
./configure --with-http_ssl_module --with-openssl=/usr/local/openssl-1.0.2u

这一步确保了 Nginx 使用正确的 OpenSSL 源码路径,并启用 SSL 模块。

步骤 5:编译和安装 Nginx

配置完成后,使用以下命令编译和安装 Nginx:

make
sudo make install

这样,Nginx 将会使用你编译并安装的 OpenSSL 库,并且启用了 SSL 支持。

步骤 6:检查 Nginx 是否成功启动

编译并安装完成后,检查 Nginx 是否正确启动。首先,验证 Nginx 是否正在运行:

ps -ef | grep nginx

如果 Nginx 正常运行,你应该能够看到类似如下的输出:

root     13651     1  0 15:15 ?        00:16:08 /usr/local/nginx/sbin/nginx

如果 Nginx 没有启动,可以手动启动 Nginx:

sudo /usr/local/nginx/sbin/nginx

步骤 7:配置 Nginx SSL

确保 Nginx 配置文件中的 SSL 相关设置正确。以下是一个简单的配置示例:

server {
    listen 443 ssl;
    server_name yourdomain.com;

    ssl_certificate /path/to/your/certificate.crt;
    ssl_certificate_key /path/to/your/private.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        root /usr/local/nginx/html;
        index index.html;
    }
}

在配置文件中,指定证书文件和私钥文件的路径,并设置 SSL 协议和加密套件。

步骤 8:重启 Nginx

修改配置文件后,需要重新加载 Nginx 配置:

sudo /usr/local/nginx/sbin/nginx -s reload

这将使 Nginx 重新加载配置文件,启用 SSL 支持。

总结

在 CentOS 7.9 上编译 Nginx 并启用 SSL 模块时,如果没有正确配置 OpenSSL 源码路径,Nginx 编译将失败。通过手动安装 OpenSSL 源码并指定其路径,可以顺利完成 Nginx 编译,并启用 HTTPS 支持。同时,确保配置文件中的 SSL 设置正确,Nginx 可以顺利提供安全的 HTTPS 服务。

通过本篇博客,大家可以了解到如何在 CentOS 系统上解决 Nginx 编译过程中缺少 OpenSSL 源码的问题,并成功启用 SSL 模块来提升 Web 服务的安全性。


http://www.kler.cn/a/510861.html

相关文章:

  • 【English-Book】Go in Action目录页翻译中文
  • AUTOSAR从入门到精通-自动驾驶测试技术
  • STL--set(集合)
  • nginx 配置防爬虫
  • 数据库服务体系结构
  • OSPF小实验
  • 1.18学习
  • 汽车 SOA 架构下的信息安全新问题及对策漫谈
  • 网络协议基础--HTTP协议
  • 解锁.NET配置魔法:打造强大的配置体系结构
  • 主从设备的同步(基于binlog和gtid实现同步)
  • TCP协议与TCP SYN Flood攻击
  • 【专题二 二叉树中的深搜】814. 二叉树剪枝
  • 解决 WSL 2 中 Ubuntu 22.04 安装 Docker 后无法启动的问题
  • 21.1、网络设备安全概述
  • Ubuntu22.04安装paddle GPU版本
  • Linux| ubuntu系统入门篇
  • 解决Spring Boot中Druid连接池“discard long time none received connection“警告
  • 分布式 ID 生成策略:应用场景与 ShardingSphere 实现
  • EPLAN 2024-电机保护开关符号,辅助触点
  • 有限元分析学习——Anasys Workbanch第一阶段笔记(13)网格单元分类、物理场与自由度概念
  • http://noi.openjudge.cn/——4.7算法之搜索——【169:The Buses】
  • 《王者荣耀》皮肤爬虫源码
  • 【漫话机器学习系列】050.epoch(迭代轮数)
  • 数字艺术类专业人才供需数据获取和分析研究
  • 解决Oracle SQL语句性能问题(10.5)——常用Hint及语法(6)(并行相关Hint)