2021年9月

先到Nginx的官网去下载最新的源码到/usr/loacal/src/目录

wget http://nginx.org/download/nginx-1.23.1.tar.gz

解压后编译

tar -zxf nginx-1.23.1.tar.gz
cd nginx-1.23.1

注意:
这里需要修改openssl的编译配置,否则编译的时候会报错

vi auto/lib/openssl/conf

把这里

    CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
    CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
    CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
    CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"

修改成

    CORE_INCS="$CORE_INCS $OPENSSL/include"
    CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
    CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
    CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"

如果需要隐藏nginx的版本,需要修改两个文件

vi src/core/nginx.h
vi src/http/ngx_http_header_filter_module.c

然后开始编译

make

编译完成后,停止nginx服务,开始安装,安装完了再启动nginx服务

systemctl stop nginx
make install
systemctl start nginx

顺利的话,以上就完成了nginx的升级,然后修改nginx的配置文件,开启TLSv1.3

vi /etc/nginx/nginx.conf

在http段添加

ssl_protocols TLSv1.2 TLSv1.3;

同时,启用HSTS,继续添加

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header X-Frame-Options "DENY";

修改完配置后重启nginx服务

systemctl restart nginx

无法通过yum直接升级,只能下载源码编译升级,不过,好在编译比较容易。
下面简述一下步骤。
首先到openssl官网下载源码到/usr/local/src/

cd /usr/local/src/
wget https://www.openssl.org/source/openssl-1.1.1s.tar.gz

解压后编译

tar -zxf openssl-1.1.1s.tar.gz
cd openssl-1.1.1s
./config --prefix=/usr/local/openssl
make && make install

编译完成后备份旧版

rm -f /usr/bin/openssl.old
rm -rf /usr/lib64/openssl.old
rm -f /usr/lib64/openssl.old
rm -f /usr/lib64/libssl.so.old
rm -f /usr/include/openssl
mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/lib64/openssl /usr/lib64/openssl.old
mv /usr/lib64/libssl.so /usr/lib64/libssl.so.old
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
ln -s /usr/local/openssl/lib/libssl.so /usr/lib64/libssl.so
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v

完成了,检查一下版本

openssl version