标签 nginx 下的文章

从源码编译 Nginx (彻底解决, 支持最新TLS特性)

从源码编译可以完全定制,并为 Nginx 指定一个现代的、支持 TLSv1.3 的 OpenSSL 版本。

  1. 安装编译依赖

    sudo yum groupinstall "Development Tools" -y
    sudo yum install -y wget perl-devel perl-ExtUtils-Embed libxslt-devel libxml2-devel gd-devel GeoIP-devel
  2. 下载并编译新版本 OpenSSL

    cd /usr/local/src
    wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz  # 请务必通过官方获取最新源码
    tar -xzvf openssl-1.1.1w.tar.gz
    cd openssl-1.1.1w
    ./config --prefix=/usr/local/openssl-1.1.1w --openssldir=/usr/local/openssl-1.1.1w shared zlib
    make -j $(nproc) && sudo make install
  3. 下载 Nginx 源码并编译

    cd /usr/local/src
    wget https://nginx.org/download/nginx-1.27.0.tar.gz  # 使用你的版本或更新的稳定版
    tar -xzvf nginx-1.27.0.tar.gz
    cd nginx-1.27.0
    ./configure \
        --prefix=/etc/nginx \
        --sbin-path=/usr/sbin/nginx \
        --with-http_ssl_module \
        --with-http_v2_module \
        --with-openssl=/usr/local/src/openssl-1.1.1w \
        --with-cc-opt='-I/usr/local/openssl-1.1.1w/include' \
        --with-ld-opt='-L/usr/local/openssl-1.1.1w/lib -Wl,-rpath,/usr/local/openssl-1.1.1w/lib'
    make -j $(nproc) && sudo make install
  4. 🔍 验证 TLSv1.3 是否成功开启

    完成编译后,你可以用以下命令快速验证 Nginx 是否已正确链接到新版 OpenSSL:

    # 检查编译配置,OpenSSL 版本应高于 1.1.1
    nginx -V 2>&1 | grep -i openssl

    完成编译后,修改配置文件即可完成:

总结与建议

  • 希望一劳永逸地解决 TLSv1.3 问题:**它能为 Nginx 定制一个现代的加密库,并且不依赖系统库,升级维护也更灵活。

希望这个方案能帮到你。如果在实施过程中遇到任何疑问,随时可以带上具体的报错信息再来问我~