文章目录

  • 一、平滑升级
  • 二、版本回退
  • 三、防盗链


一、平滑升级

平滑升级可以做到在线升级,保证不影响客户的使用,不打断用户请求,并且升级后新版本对服务端的数据也不会覆盖。
前提条件:已经安装了nginx的旧版本。我这里的是将安装好的nginx-1.18.0 升级为 nginx-1.19.2。具体编译可以参考nginx的安装与源码编译第一步:从官网下载需要升级的新版本
第二步:编译新的nginx版本

注意的是:新版本的编译过程中,执行./configure时一定要和老版本执行的语句一模一样,编译完成后只需要执行make,不需要执行make install。

[root@servera Download]# tar zxf nginx-1.19.2.tar.gz 
[root@servera Download]# cd nginx-1.19.2/
[root@servera nginx-1.19.2]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module
[root@servera nginx-1.19.2]# make

第三步:将旧版本的启动脚本备份

[root@servera nginx-1.19.2]# cd /usr/local/nginx/sbin/		#/usr/local/nginx为旧版本的安装路径
[root@servera sbin]# ls
nginx
[root@servera sbin]# cp nginx nginx.old
[root@servera sbin]# ls
nginx  nginx.old
[root@servera sbin]#

第四步:用新版本的二进制程序文件覆盖旧版本的启动脚本

[root@servera objs]# cp -f /root/Download/nginx-1.19.2/objs/nginx /usr/local/nginx/sbin/

第五步:将原先在旧的配置下启动的worker杀死,然后使用新的配置创建新的worker

[root@servera sbin]# ps -ef |grep nginx		//查看nginx进程 注意:旧版本的启动是使用脚本的方式启动
[root@servera sbin]# kill -USR2 25915		//旧版本停止接收请求,并开启新的master产生新的worker,完成平滑升级
[root@servera sbin]# kill -WINCH 25915		//等待旧版本处理完,关闭worker进程

Nginx GUI下载 nginx/1.19.2_nginx


Nginx GUI下载 nginx/1.19.2_新版本_02


如果不考虑回退,也可以直接使用kill -QUIT 25915结束老版本的master

二、版本回退

第一步:先还原nginx脚本,旧版本备份的二进制程序覆盖新版本

[root@servera sbin]# cp -f /usr/local/nginx/sbinnginx.old /usr/local/nginx/sbinnginx

第二步:重新唤起旧版本的master进程,让其接收请求;让新版本的master进程不再接收请求,关闭新版本的worker进程

[root@servera sbin]# kill -HUP 25915		//启动旧版本的worker进程
[root@servera sbin]# kill -USR2 25934		//新版本不再接收请求
[root@servera sbin]# kill -WINCH 25934		//关闭新版本的masterr进程
[root@servera sbin]# kill -9 25934		//关闭新版本的masterr进程

Nginx GUI下载 nginx/1.19.2_Nginx GUI下载_03

三、防盗链

概述:有A、B两个网站。如果A网站想使用B网站的图片,可以直接写上B网站图片的链接地址,但如果B网站不想A网站这么做,那么B网站可以采取防盗链的措施。导致的结果就是,A网站想请求所需要的资源,通过url的方式,获取的可能不是原来的图片了,出现404或者别的图片替代了。如果通过浏览器直接打开图片url,那么仍然有可能显示404,这就是防盗链。
实验环境:

主机名

servera

serverb

IP

192.168.1.136

192.168.1.116

职能

nginx服务器 提供访问资源

nginx服务器 进行盗链操作

在servera上添加图片资源:

Nginx GUI下载 nginx/1.19.2_旧版_04


Nginx GUI下载 nginx/1.19.2_Nginx GUI下载_05


Nginx GUI下载 nginx/1.19.2_新版本_06


当serverb进行盗链

[root@serverb ~]# vim /usr/local/nginx/conf/nginx.conf
http {
   server {
        listen       80;
        server_name  localhost;
        location / {
            root   /daolian;		
            index  daolian.html;	//添加盗链的访问页面
        }
}
[root@serverb ~]# mkdir /daolian
[root@serverb ~]# cd /daolian
[root@serverb daolian]# vim daolian.html 	//完成盗链的脚本
<html>
<body>
<img src="http://www.westos.org/test.jpg">	//指定盗链的源路径
</body>
</html>
[root@serverb daolian]# nginx -s reload			
//此处是已经添加了软链接 ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

Nginx GUI下载 nginx/1.19.2_Nginx GUI下载_07


Nginx GUI下载 nginx/1.19.2_nginx_08


在servera中设置防止盗链

[root@servera nginx]# vim /usr/local/nginxconf/nginx.conf
   server {
      listen       80;
      server_name www.westos.org;
        
      location ~\.(gif|jpg|png|jpeg)$ {
         valid_referers none blocked www.westos.org;	#valid_referers 表示可用的 referers 设置;#none 表示没有 referers,直接通过浏览器或者其他工具访问;blocked 表示有referers,但是被代理服务器或者防火墙隐藏;表示通过www.westos.org访问的referers
         if ($invalid_referer) {	#$invalid_referer:当请求的 refer 是合法的,可以被后面任一参数所匹配, $invalid_referer 的值为0,若不匹配则值为 1
            return 403;		#第一种返回403错误
            #rewrite ^/ http://bbs.westos.org/daolian.jpg;	//第二种重定向到指定站点图片
                    }
              }
       }
////////////////当使用第二种是需要在配置文件中添加以下设置/////////
     server {
        listen       80;
        
        server_name bbs.westos.org;
         location / {
               root /bbs;		//需要手动建立此目录,并且在此目录下存放重定向的图片资源
               index index.html;
               }
        }

Nginx GUI下载 nginx/1.19.2_Nginx GUI下载_09


Nginx GUI下载 nginx/1.19.2_旧版_10