从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)

第三阶段基础

时  间:2023年7月27日

参加人:全班人员

内  容:

Nginx企业级优化与防盗链

目录

一、配置Nginx实现防盗链功能

1、建立资源主机的测试主页

2、建立盗链主机的测试主页

3、资源主机设置防盗链

二、对FPM模块进行参数优化

三、Nginx 为目录添加访问控制

四、自定义错误页面

五、自动索引

六、目录别名功能

七、通过UA实现手机端和电脑端的分离

八、nginx平滑升级版本

(一)nginx平滑升级概述

(二)nginx平滑升级原理

(三)nginx平滑升级实战

1.查看旧版nginx的编译参数    

2.编译新版本Nginx源码包,

3.备份二进制文件,用新版本的替换

4.确保配置文件无报错

5.发送USR2信号

6.发送WINCH信号

7.发送QUIT信号

8.验证nginx版本号,并访问测试

九、附录:CPU相关信息查看

查看CPU型号:

查看物理CPU个数:

查看CPU核心数:

查看CPU线程数:

查看相关系统信息:


一、配置Nginx实现防盗链功能

 Nginx防盗链功能也非常强大,在默认情况下只需要进行简单的配置,即可实现防盗处理

实验环境:

  1. 资源主机      192.168.100.131
  2. 盗链主机  192.168.100.132

1、建立资源主机的测试主页

vim /usr/local/nginx/html/index.html

配置如下:

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第1张图片

启动服务:/usr/local/nginx/sbin/nginx

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第2张图片

本机(100.131)测试:

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第3张图片

2、建立盗链主机的测试主页

vim /usr/local/nginx/html/index.html

配置如下:

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第4张图片

客户机(100.132)测试:

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第5张图片

3、资源主机设置防盗链

配置说明:

valid_referers 设置信任网站;

none浏览器中referer(Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理)为空的情况,就直接在浏览器访问图片;

blocked referer不为空的情况,但是值被代理或防火墙删除了,这些值不以http://或https://开头。

vim /usr/local/nginx/conf/nginx.conf

配置如下:

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第6张图片

启动服务:

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第7张图片

第一行:

wma|wmv|asf|mp3|mmf|zip|rar|jpg|gif|png|swf|flv表示对这些后缀的文件实行防盗链

第二行:

none blocked *.192.168.100.131;

//不区分大小写

表示referers信息中匹配none blocked *.source.com source.com (*代表任何,任何的二级域名)

if{}里面内容的意思是,如果链接不是来自第二行指定的就强制跳转到403错误页面,当然直接返回404也是可以的,也可以是图片。

注意:设置客户机的hosts文件

客户(100.132)测试:

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第8张图片

二、对FPM模块进行参数优化

 Nginx的PHP解析功能实现如果是交由FPM(fastcgi 进程管理器)处理的,为了提高PHP的处理速度,可对FPM模块进行参数跳转。

FPM优化参数:

pm 使用哪种方式启动fpm进程,可以说static和dynamic,前者将产生固定数量的fpm进程,后者将以动态的方式产生fpm进程

pm.max_children static方式下开启的fpm进程数

pm.start_servers 动态方式下初始的fpm进程数量

pm.min_spare_servers 动态方式下最小的fpm空闲进程数

pm.max_spare_servers 动态方式下最大的fpm空闲进程数

注:以上调整要根据服务器的内存与服务器负载进行调整

示例:

服务器为云服务器,运行了个人论坛,内存为1.5G,fpm进程数为20,内存消耗近1G,处理比较慢

优化参数调整:

# vim /usr/local/php5/etc/php-fpm.conf

pm = dynamic

pm.start_servers = 5

pm.min_spare_servers = 2

pm.max_spare_servers = 8

三、Nginx 为目录添加访问控制

用户访问控制:使用apache 的 htpasswd 命令来创建密码文件

yum -y install httpd-tools

htpasswd -c /usr/local/nginx/.htpasswd crushlinux

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第9张图片

客户端地址访问控制:

vim /usr/local/nginx/conf/nginx.conf

配置如下:    

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第10张图片

 

访问测试:

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第11张图片

 

四、自定义错误页面

vim /usr/local/nginx/conf/nginx.conf

自定义错误配置如下:  

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第12张图片

启动服务:

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第13张图片

访问测试:

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第14张图片

五、自动索引

vim /usr/local/nginx/conf/nginx.conf

索引配置如下:  

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第15张图片

启动服务:

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第16张图片

访问测试:

192.168.100.131/download

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第17张图片

六、目录别名功能

vim /usr/local/nginx/conf/nginx.conf

别名配置如下:      

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第18张图片

启动服务:

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第19张图片

访问测试:

http://192.168.100.131/abc 进行测试

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第20张图片

七、通过UA实现手机端和电脑端的分离

        实现nginx区分pc和手机访问不同的网站,是物理上完全隔离的两套网站(一套移动端、一套pc端),这样带来的好处pc端和移动端的内容可以不一样,移动版网站不需要包含特别多的内容,只要包含必要的文字和较小的图片,这样会更节省流量。有好处当然也就会增加困难,难题就是你需要维护两套环境,并且需要自动识别出来用户的物理设备并跳转到相应的网站,当判断错误时用户可以自己手动切换回正确的网站。

        有两套网站代码,一套PC版放在/usr/local/nginx/html/web,一套移动版放在/usr/local/nginx/html/mobile。只需要修改nginx的配置文件,nginx通过UA来判断是否来自移动端访问,实现不同的客户端访问不同内容。

location / {

#默认PC端访问内容

    root /usr/local/nginx/html/web;

#如果是手机移动端访问内容    

if ( $http_user_agent ~ "(MIDP)|(WAP)|(UP.Browser)|(Smartphone)|(Obigo)|(Mobile)|(AU.Browser)|(wxd.Mms)|(WxdB.Browser)|(CLDC)|(UP.Link)|(KM.Browser)|(UCWEB)|(SEMC-Browser)|(Mini)|(Symbian)|(Palm)|(Nokia)|(Panasonic)|(MOT-)|(SonyEricsson)|(NEC-)|(Alcatel)|(Ericsson)|(BENQ)|(BenQ)|(Amoisonic)|(Amoi-)|(Capitel)|(PHILIPS)|(SAMSUNG)|(Lenovo)|(Mitsu)|(Motorola)|(SHARP)|(WAPPER)|(LG-)|(LG/)|(EG900)|(CECT)|(Compal)|(kejian)|(Bird)|(BIRD)|(G900/V1.0)|(Arima)|(CTL)|(TDG)|(Daxian)|(DAXIAN)|(DBTEL)|(Eastcom)|(EASTCOM)|(PANTECH)|(Dopod)|(Haier)|(HAIER)|(KONKA)|(KEJIAN)|(LENOVO)|(Soutec)|(SOUTEC)|(SAGEM)|(SEC-)|(SED-)|(EMOL-)|(INNO55)|(ZTE)|(iPhone)|(Android)|(Windows CE)|(Wget)|(Java)|(curl)|(Opera)" )

{

root /usr/local/nginx/html/mobile;

}


index index.html index.htm;

}

实验模拟:不同浏览器访问到不同的页面

vim /usr/local/nginx/conf/nginx.conf

配置如下:

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第21张图片

 

配置首页信息:

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第22张图片

访问测试:

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第23张图片

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第24张图片

八、nginx平滑升级版本

(一)nginx平滑升级概述

         随着网站并发访问量越来越高,nginx web 服务器也越来越流行,nginx 版本换代越来越频繁,1.15.2版本的nginx更新了许多新功能,生产环境中版本升级必然的,但是线上业务不能停,此时nginx的升级就是运维的重要工作了。

(二)nginx平滑升级原理

多进程模式下的请求分配方式:

         Nginx默认工作在多进程模式下,即主进程(master process)启动后完成配置加载和端口绑定等动作,fork出指定数量的工作进程(worker process),这些子进程会持有监听端口的文件描述符(fd),并通过在该描述符上添加监听事件来接受连接(accept)。

信号的接收和处理:

         Nginx主进程在启动完成后会进入等待状态,负责响应各类系统消息,如SIGCHLD、SIGHUP、SIGUSR2等。

Nginx信号简介:

主进程支持的信号:

TERM, INT: 立刻退出

QUIT: 等待工作进程结束后再退出

KILL: 强制终止进程

HUP: 重新加载配置文件,使用新的配置启动工作进程,

并逐步关闭旧进程。

USR1: 重新打开日志文件

USR2: 启动新的主进程,实现热升级

WINCH: 逐步关闭工作进程

工作进程支持的信号:

TERM, INT: 立刻退出

QUIT: 等待请求处理结束后再退出

USR1: 重新打开日志文件

(三)nginx平滑升级实战

rpm -q httpd

package httpd is not installed

yum -y install pcre-devel zlib-devel openssl-devel

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第25张图片

软件包准备:

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第26张图片

1.查看旧版nginx的编译参数    

/usr/local/nginx/sbin/nginx -V

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第27张图片

2.编译新版本Nginx源码包,

安装路径需与旧版一致,注意:不要执行make install !!!!

tar xf nginx-1.15.9.tar.gz -C /usr/src/

cd /usr/src/nginx-1.15.9/

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx  && make

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第28张图片

3.备份二进制文件,用新版本的替换

mv /usr/local/nginx/sbin/nginx

/usr/local/nginx/sbin/nginx.old

ls

cp objs/nginx /usr/local/nginx/sbin/

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第29张图片

4.确保配置文件无报错

/usr/local/nginx/sbin/nginx -t

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第30张图片

5.发送USR2信号

向主进程(master)发送USR2信号,Nginx会启动一个新版本的master进程和对应工作进程,和旧版一起处理请求

ps aux | grep nginx | grep -v grep

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第31张图片

kill -USR2 102604

ps aux | grep nginx | grep -v grep

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第32张图片

6.发送WINCH信号

向旧的Nginx主进程(master)发送WINCH信号,它会逐步关闭自己的工作进程(主进程不退出),这时所有请求都会由新版Nginx处理

kill -WINCH 102604

ps aux | grep nginx | grep -v grep

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第33张图片

注意:回滚步骤,发送HUP信号

如果这时需要回退继续使用旧版本,可向旧的Nginx主进程发送HUP信号,它会重新启动工作进程, 仍使用旧版配置文件。然后可以将新版Nginx进程杀死(使用QUIT、TERM、或者KILL)

kill -HUP 102604

ps aux | grep nginx | grep -v grep

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第34张图片

7.发送QUIT信号

升级完毕,可向旧的Nginx主进程(master)发送(QUIT、TERM、或者KILL)信号,使旧的主进程退出

kill -QUIT 102604

ps aux | grep nginx | grep -v grep

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第35张图片

8.验证nginx版本号,并访问测试

/usr/local/nginx/sbin/nginx -v

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第36张图片

九、附录:CPU相关信息查看

查看CPU型号:

grep "model name" /proc/cpuinfo | uniq

dmidecode -s processor-version | uniq

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第37张图片

查看物理CPU个数:

grep 'physical id' /proc/cpuinfo |sort -u |wc -l

grep 'physical id' /proc/cpuinfo |uniq |wc -l

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第38张图片

查看CPU核心数:

grep 'core id' /proc/cpuinfo | sort -u | wc -l

grep 'core id' /proc/cpuinfo | uniq | wc -l

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第39张图片

查看CPU线程数:

grep 'processor' /proc/cpuinfo | sort -u | wc -l

grep 'processor' /proc/cpuinfo | uniq | wc -l

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第40张图片

查看相关系统信息:

free -m

free -g

df -Th

mii-tool ens33

从小白到大神之路之学习运维第69天-------Nginx企业级优化与防盗链(下篇)_第41张图片

 

你可能感兴趣的:(运维,学习,nginx)