Nginx 在线版本升级,升级到最新v1.22.0版本
ztj100 2024-10-27 18:29 10 浏览 0 评论
1. 介绍
前面介绍过Nginx 隐藏版本(https://zinyan.com/?p=339)提高安全。
但是不管怎么配置,都没有直接进行版本升级来的安全性高。下面就来介绍我是如何将服务器的nginx版本升级到最新的v1.22.0
由于我的服务器是CentOS 下面主要围绕CentOS下的Nginx 版本升级进行的介绍。
2. yum 在线升级
2.1 确认Nginx版本
通过 nginx -v 命令查询本机安装的nginx 版本,实例:
[root@xxxxxuf63 /]# nginx -v
nginx version: nginx/1.14.1
可以通过http://nginx.org/en/download.html 官网,知道nginx 当前的最新版本。
或者通过 yum list |grep nginx 可以查询到最新的版本。
[root@xxxxxuf63 /]# yum list |grep nginx
知道版本后,就可以判断是否进行更新操作了。
2.2 配置在线升级
根据官网的介绍,我们可以通过 vim /etc/yum.repos.d/nginx.repo 文件,配置以下内容:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
有一些文章,会让我们将$releasever 改为系统版本等等。其实这一步大可不必。而且修改后update更新功能将无法使用。
2.3 更新nginx
配置完毕后,我们可以通过yum update nginx -y 实现在线升级了。
为了避免升级可能造成的配置文件丢失问题。我们可以针对当前的nginx的配置进行备份。
通过 nginx -V 可以查询到本机安装的nginx的各种配置信息,实例如下:
[root@xxxxxuf63 /]# nginx -V
nginx version: nginx/1.14.1
built by gcc 8.2.1 20180905 (Red Hat 8.2.1-3) (GCC)
built with OpenSSL 1.1.1 FIPS 11 Sep 2018 (running with OpenSSL 1.1.1c FIPS 28 May 2019)
TLS SNI support enabled
configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-ipv6 --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-http_auth_request_module --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-debug --with-cc-opt='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E'
- prefix :前置页面的存储地址。例如 异常页面40x.html, 50x.html 等。
- sbin-path:nginx执行文件的存储地址。(我们更新也会更新里面的内容)
- conf-path: 配置项存储地址,也就是nginx.conf 的文件地址。
- error-log-path: 错误日志的存地址等等。
而我们通常修改项都在conf-path路径下。
2.3.1 备份 conf-path
如果担心可以通过:cp -r 进行备份操作。后面跟着两个文件名,第一个名是要备份的文件,第二个是复制后新文件名。
这就是一个复制操作。(PS:我的nginx 就在etc目录下,就直接写nginx了。如果你并不是在etc目录下,需要写路径否则会找不到文件对象)。
[root@xxxxxuf63 etc]# cp -r nginx nginx-1.14.1
例如上面,我就将nginx 复制了一个nginx-1.14.1的文件夹。
之后通过:yum update nginx -y 进行升级即可。 升级完毕后可以通过nginx -v 看到新版本是否正确了。
实例:
[root@xxxxxuf63 etc]# sudo yum update nginx -y
nginx stable repo 48 kB/s | 43 kB 00:00
Dependencies resolved.
=============================================================================================================================================================================
Package Architecture Version Repository Size
=============================================================================================================================================================================
Upgrading:
nginx x86_64 1:1.22.0-1.el8.ngx nginx-stable 827 k
Transaction Summary
=============================================================================================================================================================================
Upgrade 1 Package
......
Complete!
直到出现 complete! 就代表更新完毕了。
2.4 检查并重启
安装完毕后,可以通过nginx -v 检查版本是否为最新版本了,实例:
[root@xxxxxuf63 etc]# nginx -v
nginx version: nginx/1.22.0
然后我们可以通过nginx -t 测试一下conf配置文件是否通过。实例:
[root@xxxxxuf63 etc]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
出现successful 就代表通过检测。我们的nginx可以启动了。
一切完毕后,通过nginx-s reload 重启即可完成整体的升级操作了。实例:
[root@xxxxxuf63 nginx]# nginx -s reload
到这里安装就结束了。
2.4 卸载重装
我们如果更新或者安装出现了无法解决的问题,可以尝试卸载后重装的模式解决。
1、卸载: yum remove nginx
2、安装: yum install nginx -y
3、启动: service nginx restart
建议大家安装时采用yum进行安装。这样更新和后续的卸载等也会很方便。
3. listen ... ssl 错误问题
在升级到1.22.0版本后,检测conf文件时出现了ssl 错误。(主要是因为开启了https)
nginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /etc/nginx/nginx.conf:29
那是因为v1.22.0版本ssl的写法改变了。
#老版本
listen 443;
ssl on;
#新版本
listen 443 ssl;
新版本将ssl 直接写在 端口后面了。同时可以去掉ssl on配置项。
参考链接:http://nginx.org/en/linux_packages.html
相关推荐
- 从IDEA开始,迈进GO语言之门(idea got)
-
前言笔者在学习GO语言编程的时候,GO语言在国内还没有像JAVA/Php/Python那样普及,绕了不少的弯路,要开始入门学习一门编程语言,最好就先从选择一个好的编程语言的开发环境开始,有了这个开发环...
- 基于SpringBoot+MyBatis的私人影院java网上购票jsp源代码Mysql
-
本项目为前几天收费帮学妹做的一个项目,JavaEEJSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。一、项目介绍基于SpringBoot...
- 基于springboot的个人服装管理系统java网上商城jsp源代码mysql
-
本项目为前几天收费帮学妹做的一个项目,JavaEEJSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。一、项目介绍基于springboot...
- 基于springboot的美食网站Java食品销售jsp源代码Mysql
-
本项目为前几天收费帮学妹做的一个项目,JavaEEJSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。一、项目介绍基于springboot...
- 贸易管理进销存springboot云管货管账分析java jsp源代码mysql
-
本项目为前几天收费帮学妹做的一个项目,JavaEEJSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。一、项目描述贸易管理进销存spring...
- SpringBoot+VUE员工信息管理系统Java人员管理jsp源代码Mysql
-
本项目为前几天收费帮学妹做的一个项目,JavaEEJSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。一、项目介绍SpringBoot+V...
- 目前见过最牛的一个SpringBoot商城项目(附源码)还有人没用过吗
-
帮粉丝找了一个基于SpringBoot的天猫商城项目,快速部署运行,所用技术:MySQL,Druid,Log4j2,Maven,Echarts,Bootstrap...免费给大家分享出来前台演示...
- SpringBoot+Mysql实现的手机商城附带源码演示导入视频
-
今天为大家带来的是基于SpringBoot+JPA+Thymeleaf框架的手机商城管理系统,商城系统分为前台和后台、前台用的是Bootstrap框架后台用的是SpringBoot+JPA都是现在主...
- 全网首发!马士兵内部共享—1658页《Java面试突击核心讲》
-
又是一年一度的“金九银十”秋招大热门,为助力广大程序员朋友“面试造火箭”,小编今天给大家分享的便是这份马士兵内部的面试神技——1658页《Java面试突击核心讲》!...
- SpringBoot数据库操作的应用(springboot与数据库交互)
-
1.JDBC+HikariDataSource...
- SpringBoot 整合 Flink 实时同步 MySQL
-
1、需求在Flink发布SpringBoot打包的jar包能够实时同步MySQL表,做到原表进行新增、修改、删除的时候目标表都能对应同步。...
- SpringBoot + Mybatis + Shiro + mysql + redis智能平台源码分享
-
后端技术栈基于SpringBoot+Mybatis+Shiro+mysql+redis构建的智慧云智能教育平台基于数据驱动视图的理念封装element-ui,即使没有vue的使...
- Springboot+Mysql舞蹈课程在线预约系统源码附带视频运行教程
-
今天发布的是由【猿来入此】的优秀学员独立做的一个基于springboot脚手架的Springboot+Mysql舞蹈课程在线预约系统,系统项目源代码在【猿来入此】获取!https://www.yuan...
- SpringBoot+Mysql在线众筹系统源码+讲解视频+开发文档(参考论文
-
今天发布的是由【猿来入此】的优秀学员独立做的一个基于springboot脚手架的在线众筹管理系统,主要实现了普通用户在线参与众筹基本操作流程的全部功能,系统分普通用户、超级管理员等角色,除基础脚手架外...
- Docker一键部署 SpringBoot 应用的方法,贼快贼好用
-
这两天发现个Gradle插件,支持一键打包、推送Docker镜像。今天我们来讲讲这个插件,希望对大家有所帮助!GradleDockerPlugin简介...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 从IDEA开始,迈进GO语言之门(idea got)
- 基于SpringBoot+MyBatis的私人影院java网上购票jsp源代码Mysql
- 基于springboot的个人服装管理系统java网上商城jsp源代码mysql
- 基于springboot的美食网站Java食品销售jsp源代码Mysql
- 贸易管理进销存springboot云管货管账分析java jsp源代码mysql
- SpringBoot+VUE员工信息管理系统Java人员管理jsp源代码Mysql
- 目前见过最牛的一个SpringBoot商城项目(附源码)还有人没用过吗
- SpringBoot+Mysql实现的手机商城附带源码演示导入视频
- 全网首发!马士兵内部共享—1658页《Java面试突击核心讲》
- SpringBoot数据库操作的应用(springboot与数据库交互)
- 标签列表
-
- idea eval reset (50)
- vue dispatch (70)
- update canceled (42)
- order by asc (53)
- spring gateway (67)
- 简单代码编程 贪吃蛇 (40)
- transforms.resize (33)
- redisson trylock (35)
- 卸载node (35)
- np.reshape (33)
- torch.arange (34)
- node卸载 (33)
- npm 源 (35)
- vue3 deep (35)
- win10 ssh (35)
- exceptionininitializererror (33)
- vue foreach (34)
- idea设置编码为utf8 (35)
- vue 数组添加元素 (34)
- std find (34)
- tablefield注解用途 (35)
- python str转json (34)
- java websocket客户端 (34)
- tensor.view (34)
- java jackson (34)