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

【运维实战】nginx版本升级

最近服务器安全检测,发现Linux服务器上安装启动的nginx有漏洞,排查发现nginx版本比较低,需要升级nginx。

一 升级前

nginx安装路径:/usr/local/nginx

nginx配置路径:/usr/local/nginx/conf

nginx配置域名SSL证书路径:/usr/local/nginx/cert

    <span style="color:rgba(0, 0, 0, 0.9)"><span style="color:rgba(0, 0, 0, 0.9)"><code>    server {</code><code>        <span style="color:#ca7d37">listen</span>       <span style="color:#0e9ce5">80</span>;</code><code>        <span style="color:#ca7d37">listen</span>       <span style="color:#0e9ce5">443</span> ssl;</code><code>        server_name  app.xxx.com;</code>
    <code>        ssl_certificate     /usr/<span style="color:#ca7d37">local</span>/nginx/cert/server.pem;</code><code>        ssl_certificate_key  /usr/<span style="color:#ca7d37">local</span>/nginx/cert/server.key;</code><code>        <span style="color:#ca7d37">//</span> ... 省略...</code><code>     }    </code></span></span>

    1、备份

      <span style="color:rgba(0, 0, 0, 0.9)"><span style="color:rgba(0, 0, 0, 0.9)"><code><span style="color:#ca7d37">cd</span> /usr/local/</code><code><span style="color:#afafaf"><em>#将nginx打包成tar</em></span></code><code>tar -cvf nginx.tar nginx/</code><code><span style="color:#afafaf"><em>#或者 将nginx文件夹压缩成nginx.tar.gz</em></span></code><code>tar -zcvf nginx.tar.gz nginx/</code></span></span>

      2、停止nginx

        <span style="color:rgba(0, 0, 0, 0.9)"><span style="color:rgba(0, 0, 0, 0.9)"><code><span style="color:#ca7d37">cd</span> /usr/local/nginx/sbin</code><code>./nginx -s stop</code></span></span>

        或者使用kill -9 nginx的pid(多个进程)

          <span style="color:rgba(0, 0, 0, 0.9)"><span style="color:rgba(0, 0, 0, 0.9)"><code><span style="color:#afafaf"><em>#查看nginx所有的进程</em></span></code><code>ps -ef|<span style="color:#ca7d37">grep</span> nginx</code><code><span style="color:#afafaf"><em>#根据上面得到的pid,杀掉进程</em></span></code><code><span style="color:#ca7d37">kill</span> -<span style="color:#0e9ce5">9</span> pid</code></span></span>

          或者使用pkill

            <span style="color:rgba(0, 0, 0, 0.9)"><span style="color:rgba(0, 0, 0, 0.9)"><code><span style="color:#afafaf"><em>#终止所有与 nginx 相关的进程</em></span></code><code><span style="color:#0e9ce5">pkill</span> nginx</code></span></span>

            3、显示 Nginx 的版本信息以及在编译 Nginx 时所使用的配置参数

              <span style="color:rgba(0, 0, 0, 0.9)"><span style="color:rgba(0, 0, 0, 0.9)"><code><span style="color:#ca7d37">cd</span> /usr/local/nginx/sbin</code><code>./nginx -V</code></span></span>

              执行结果如下:

              图片

              找到”configure arguments:“后面的内容并记录下来,后续升级编译新版本的nginx时需要。

                <span style="color:rgba(0, 0, 0, 0.9)"><span style="color:rgba(0, 0, 0, 0.9)"><code>--prefix=<span style="color:#ca7d37">/usr/</span>local/nginx/ --<span style="color:#ca7d37">with</span>-http_stub_status_module --<span style="color:#ca7d37">with</span>-http_ssl_module --<span style="color:#ca7d37">with</span>-openssl=<span style="color:#ca7d37">/root/</span>openssl-<span style="color:#0e9ce5">1.0</span>.2k</code></span></span>

                4、重命名

                  <span style="color:rgba(0, 0, 0, 0.9)"><span style="color:rgba(0, 0, 0, 0.9)"><code><span style="color:#afafaf"><em>#再次备份</em></span></code><code><span style="color:#ca7d37">mv</span> nginx/ nginx_old</code></span></span>

                  二 升级

                  1、下载nginx-1.28.0

                  下载链接:https://nginx.org/en/download.html

                  图片

                  下载后,上传到服务器,或者在Linux服务器上使用wget命令下载

                    <span style="color:rgba(0, 0, 0, 0.9)"><span style="color:rgba(0, 0, 0, 0.9)"><code><span style="color:#0e9ce5">wget</span> https://nginx.org/download/nginx-<span style="color:#0e9ce5">1</span>.<span style="color:#0e9ce5">28</span>.<span style="color:#0e9ce5">0</span>.tar.gz</code></span></span>

                    或者使用curl下载

                      <span style="color:rgba(0, 0, 0, 0.9)"><span style="color:rgba(0, 0, 0, 0.9)"><code><span style="color:#0e9ce5">curl</span> -O https://nginx.org/download/nginx-<span style="color:#0e9ce5">1</span>.<span style="color:#0e9ce5">28</span>.<span style="color:#0e9ce5">0</span>.tar.gz</code></span></span>

                      2、上传并解压

                      比如,这里将nginx-1.28.0.tar.gz上传到/root/下面

                        <span style="color:rgba(0, 0, 0, 0.9)"><span style="color:rgba(0, 0, 0, 0.9)"><code><span style="color:#0e9ce5">cd</span> /root/</code><code><span style="color:#afafaf"><em>#解压</em></span></code><code><span style="color:#0e9ce5">tar</span> -zxvf nginx-<span style="color:#0e9ce5">1</span>.<span style="color:#0e9ce5">28</span>.<span style="color:#0e9ce5">0</span>.tar.gz</code></span></span>

                        解压后,会在/root目录下产生一个nginx-1.28.0的目录。

                        3、预编译、编译、安装

                          <span style="color:rgba(0, 0, 0, 0.9)"><span style="color:rgba(0, 0, 0, 0.9)"><code><span style="color:#ca7d37">cd</span> /root/nginx-1.28.0</code><code><span style="color:#afafaf"><em>#根据”升级前“中第3步中记录的内容编译</em></span></code><code>./configure --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-http_ssl_module --with-openssl=/root/openssl-1.0.2k</code></span></span>

                          configure命令是配置Nginx源码编译安装的脚本。这条命令中,指定了几个选项来定制Nginx的安装过程:

                          • --prefix=/usr/local/nginx/

                            :指定Nginx安装目录为/usr/local/nginx/

                          • --with-http_stub_status_module

                            :启用stub status模块,该模块提供了一个页面显示Nginx当前的状态信息,如活跃连接数等。

                          • --with-http_ssl_module

                            :启用SSL/TLS支持,这对于提供HTTPS服务是必需的。

                          • --with-openssl=/root/openssl-1.0.2k

                            :指定OpenSSL库的路径。在这个例子中,使用的是OpenSSL版本1.0.2k,它位于/root/目录下。

                            <span style="color:rgba(0, 0, 0, 0.9)"><span style="color:rgba(0, 0, 0, 0.9)"><code><span style="color:#afafaf"><em>#编译和安装</em></span></code><code><span style="color:#0e9ce5">make</span> && make install</code></span></span>

                            4、拷贝之前的配置文件、证书到新的nginx

                              <span style="color:rgba(0, 0, 0, 0.9)"><span style="color:rgba(0, 0, 0, 0.9)"><code><span style="color:#afafaf"><em>#cp拷贝配置文件,-r递归,-f强制覆盖</em></span></code><code><span style="color:#ca7d37">cp</span> -r -f /usr/local/nginx_old/conf/* /usr/local/nginx/conf/</code></span></span>

                              如果提示是否覆盖,输入:y,进行覆盖。

                                <span style="color:rgba(0, 0, 0, 0.9)"><span style="color:rgba(0, 0, 0, 0.9)"><code><span style="color:#afafaf"><em>#创建目录cert</em></span></code><code><span style="color:#ca7d37">mkdir</span> -p /usr/local/nginx/cert</code><code><span style="color:#afafaf"><em>#cp拷贝域名ssl证书文件到新编译安装好的nginx中</em></span></code><code><span style="color:#ca7d37">cp</span> -r -f /usr/local/nginx_old/cert/* /usr/local/nginx/cert/</code></span></span>

                                5、启动nginx

                                  <span style="color:rgba(0, 0, 0, 0.9)"><span style="color:rgba(0, 0, 0, 0.9)"><code><span style="color:#ca7d37">cd</span> /usr/local/nginx/sbin</code><code>./nginx</code></span></span>

                                  6、查看是否启动

                                    <span style="color:rgba(0, 0, 0, 0.9)"><span style="color:rgba(0, 0, 0, 0.9)"><code><span style="color:#0e9ce5">ps</span> -ef|grep nginx</code></span></span>

                                    图片

                                    7、验证版本

                                      <span style="color:rgba(0, 0, 0, 0.9)"><span style="color:rgba(0, 0, 0, 0.9)"><code><span style="color:#ca7d37">cd</span> /usr/local/nginx/sbin</code><code>./nginx -v</code></span></span>

                                      图片

                                      http://www.xdnf.cn/news/8346.html

                                      相关文章:

                                    • 我的世界模组开发——水平方向的方块(3)
                                    • 5.22本日总结
                                    • 人形机器人,进入第一阶段概念设计和起泡沫的阶段
                                    • 组合问题(分割字符串)
                                    • 【Java持久层框架对比与使用】
                                    • 【详解自定义类型:联合和枚举】:联合体类型的声明、特点、大小的计算,枚举类型的声明、优点和使用
                                    • 522UART是什么
                                    • 4. 寻找两个正序数组的中位数
                                    • 复盘20250522
                                    • C++:list容器,deque容器
                                    • 六大设计原则
                                    • 如何在 FastAPI 中合理使用 Pydantic 的 Alias
                                    • UE4 Simulation Stage 制作 平流
                                    • 开疆智能Profinet转RS485网关连接富士电机配置案例
                                    • 问题 | 撰写一份优秀的技术文档,既是科学也是艺术。
                                    • 模仿医学专家思维的Citrus:助力医疗决策支持
                                    • 自定义类型-联合体
                                    • 十进制转二进制
                                    • git@gitee.com: Permission denied (publickey). fatal: 无法读取远程仓库
                                    • N-gram语言模型原理与实战教程
                                    • sqli-labs第二十一/二十二关——POST-base64
                                    • STL 转 STP 深度技术指南:从 3D 打印模型到工程标准的跨领域转换全解析(附迪威模型在线方案)
                                    • 亚马逊选品可以从以下几个方面着手
                                    • 浙江大学python程序设计(陈春晖、翁恺、季江民)习题答案-第十章
                                    • 各种标准的简称和字母标识
                                    • 01-jenkins学习之旅-window-下载-安装-安装后设置向导
                                    • Android 串口-usb-serial-for-android
                                    • Spring Boot——自动配置
                                    • 如何给文件夹添加编号?批量给文件夹添加数字、字母、日期编号
                                    • 前端判空:与后端 “千层套路” 的斗智斗勇