IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Nginx优化与防盗链 -> 正文阅读

[系统运维]Nginx优化与防盗链

一、Nginx优化案例

1、隐藏版本号

方法一:

(1)修改配置文件 vim /usr/local/nginx/conf/nginx.conf

http {
? ? include ? ? ? mime.types;
? ? default_type ?application/octet-stream;
server_tokens off; ? #添加关闭版本号

}

(2)先curl -I http://192.168.92.140查看之前的版本号是多少 (- 大写的i)

重启服务:systemctl restart nginx

再次查看: curl -I http://192.168.92.140??

1a0a8ea5861e46cc9a218eef37d04d44.png

add3358231104ba6a2da096282c7bb3f.png

230874797a554d899153a3acc13c8b63.png773acd4b915e45599d165657fc9141d2.png

?方法二、编译安装

vim /opt/nginx-1.22.0/src/core/nginx.h
#define NGINX_VERSION "what are you doing"               #修改版本号
#define NGINX_VER "nonono" NGINX_VERSION     #修改服务器类型
cd /opt/nginx-1.22.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install
###################
http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens on;   ##打开版本号
    vhost_traffic_status_zone;
}

875c88e6724040ddb05d8ff82f38f3a6.png

e9e9471d220c4bce9f00c39dfed4d324.png

?2、设置缓存时间

vim /usr/local/nginx/conf/nginx.conf
http {
......
  server {
  ...... 
    location / {
      root html;
      index index.html index.htm;
    }
    
    location ~ \.(gif|jpg|jepg|png|bmp|ico)$ {    #加入新的 location,以图片作为缓存对象
      root html;
      expires 1d;                 #指定缓存时间,1天
    }
......
  }
}

a110e6a9095d4db5959c68ca2424f9bd.png

systemctl restart nginx    ##重启服务
cd /usr/local/nginx/html/

e50d79d2a4d048e48e80392829089b47.png

?放两张照片到此文件中583d5a920d1e418497bef6ec94334f00.png

打开浏览器,点击设置打开开发人员模式

?选择 网络 —> 选择 HTML、WS、其他?

??访问 http://192.168.92.140/111.jpg ,查看响应头中包含 Cahce-Control:max-age=86400 表示缓存时间是 86400 秒。也就是缓存一天的时间,一天之内浏览器访问这个页面,都是用缓存中的数据,而不需要向 Nginx 服务器重新发出请求,减少了服务器的使用带宽。

cfa0049cdabc409ea910619e8c5aa01b.png

?3、日志切割

日志切割的目的:以天为单位截取日志,并以时间作为日志的文件名

(1)日志位置

http server的服务的日志路径为

/usr/local/nginx/logs

(2)编辑脚本

[root@zyf ~]# cd /usr/local/nginx/logs
[root@zyf logs]# vim nginx_log.sh

脚本内容如下

#!/bin/bash
day=$(date -d "-1 day" "+%Y%m%d")                #定义时间变量
logs_path="/var/log/nginx"                       #定义日志存放路径
pid_path="/usr/local/nginx/logs/nginx.pid"       #定义日志截取路径
[ -d $logs_path ] || mkdir -p $logs_path         #判断是否有存放日志路径,没有的话创建
mv /usr/local/nginx/logs/access.log ${logs_path}/zyf-access.log-$day
kill -USR1 $(cat $pid_path)                      #重载日志文件
find $logs_path -mtime +30 -exec rm -rf {} \;    #删除30天以前的日志

赋予执行权限? ?chomd +x nginx_log.sh

运行脚本 ./nginx_log.sh

(3)验证结果

f211de6b0be04ac9a79d0a3bd1f459e8.png

7176c2f810714a7b9f27cc08b78f59f3.png?修改时间再次执行脚本ecd6d48e18324f438d66a899115eff4e.png

?4、连接超时

三个请求方式:请求行,请求头,请求体

?HTTP有一个KeepAlive模式,它告诉web服务器在处理完一个请求后保持这个TCP连接的打开状态。若接收到来自客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。
?KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。

vim /usr/local/nginx/conf/nginx.conf
http {
......
    keepalive_timeout 65 180;
    client_header_timeout 80;     #客户端向服务端发送一个完整的request header的超时时间
    client_body_timeout 80;       #客户端向服务端发送一个完整的request body的超时时间
    ......
)

keepalive_timeout: 指的是keepalive的超时时间。指定每个tcp连接最多可以保持多长时间,服务器将会在这个事件后关闭连接。Nginx的默认值为65s,有些浏览器最多保持60s,使用可以设定为60s。若将他设置为0,就禁止了keepalive连接。

第二个参数指定了响应头keep-alive:timeout=time值。这个头能够让一些浏览器主动关闭链接,这样服务器就不必去关闭连接了。没有这个参数,nginx不会发送keep-alive响应头。
739bd827af1944b488d8cf53a8edc6c8.png

?保存并重启服务???? systemctl restart nginx

打开网页查看keep-Alive变成了180

450d6b659e764f91ba9e558032af2167.png

?5、更改进程数

在高并发场景,需要启动更多的Nginx进程以保证快速相应,以处理用户的请求避免造成阻塞

cat /proc/cpuinfo | grep -c "physical id" #查看cpu核数
ps aux | grep nginx             #查看nginx主进程中包含几个子进程

87c7c6b86d8f4984ac27f3563fdcc766.png

vim /usr/local/nginx/conf/nginx.conf
worker_processes  2;                      #修改为核数相同或者2倍
worker_cpu_affinity 01 10;                #设置每一个进程由不同cpu处理,进程数配置为4时0001 0010 0100 1000
}
systemctl restart nginx

c46221c077b644829003eaeb91a0e892.png1bb76c3391e144679a500422e14e2f5d.png

?6、配置网页压缩

Nginx的ngx_http_gzip_module压缩模块提供对文件内容压缩的功能,允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装可在配置文件中加入相应的压缩功能参数对压缩性能进行优化

[root@zyf ~]# vi /usr/local/nginx/conf/nginx.conf
 gzip  on; ###开启gzip压缩功能
    gzip_min_length 1k; ###压缩阈值(超过1k的文件进行压缩)
    gzip_buffers 4 16k; ###buffer(缓冲)大小为4个16k缓冲区大小
    gzip_http_version 1.1; ###压缩版本
    gzip_comp_level 6; ###压缩比率,最小为1,处理速度快,传输速度慢;最大为9,处理速度慢,传输速度快
    gzip_types text/plain application/x-javascript text/css image/jpg image/png image/gif application/xml text/javascript application/x-http-php application/javascript application/json; 
    gzip_vary on; ###选择支持vary header可以让前端的缓存服务器缓存经过gzip压缩的页面  
[root@zyf ~]# vi /usr/local/nginx/html/index.html ###插入图片
<img src=a.jpg / >
</body>
</html>
[root@zyf ~]# systemctl restart nginx

9d386c9367b64806b0f1bb319802577f.png

7ebc231d5d554ad8bae535ff32b84ee0.png

cd /usr/local/nginx/html
先将111.jpg文件传到/usr/local/nginx/html目录下
vim index.html
...... 
<img src="111.jpg"/>       #网页中插入图片
</body>
</html>

systemctl restart nginx

e76abb461296454aacfb65121a304134.png

f5b49ec099c848799357f2261749ced2.png

?验证

72452754a0a84fb698844822c43a1de6.png

二、盗链与防盗链?

1、配置防盗链

(1)盗链原理

34e4b1397d22488ba49b5db03189a61f.png

?(2)源服务器配置

cd  /usr/local/nginx/html
rz -E     #插入两张图片
ls        #查看图片
111.jpg  222.jpg  50x.html  error.png  index.html

0a8f465ed9e54444a37b1b0dd8cc810c.png

编辑页面index.html

<p><em>嘿</em></p>
<img src=111.jpg />   #插入图片格式
<img src=/>
</body>
</html>

39e774c2f288495aaa0a15324878d319.png

?编辑配置文件/etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.92.140 www.zyf.com
192.168.92.150 www.nzy.com

(3)配置盗链机

cd /usr/local/nginx/html
vim index.html
...... 
<img src="http://www.zyf.com/111.jpg"/>
</body>
</html>

echo "192.168.92.140 www.zyf.com" >> /etc/hosts 
echo "192.168.92.150 www.zzz.com" >> /etc/hosts

3a1ee7caf00c43f5ad69e060543b8765.png

(4)源主机防盗链设置? ?(注意!!!报错图片格式最好和之前插入页面的图片格式不同)

vim /usr/local/nginx/conf/nginx.conf
server
{
......
location ~* \.(gif|jpg|swf)$ {
             valid_referers none blocked *.zyf.com zyf.com;
             if ($invalid_referer) {
             rewrite ^/ http://www.zyf.com/error.png;     #盗链跳转到另一个界面
             }
    }
.......
}

4c957b17151c4f48ab53cf2e35711d08.png

验证

在192.168.92.150主机网页中搜索www.zzz.com 结果正确输出111.jpg

61794a6bcada4a1585da34f506cb1837.png

??用192.168.92.140主机网页搜索www.zyf.com 结果正确输出111.jpg

1651268aa23f495a8df58ca18d7a5ff8.png

用192.168.92.140(源主机)访问www.nzy.com显示出防盗提示错误页面

?三、fpm参数优化

cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
pid = run/php-fpm.pid
 
vim /usr/local/php/etc/php-fpm.d/www.conf
#96行
pm = dynamic    #fpm进程启动方式,动态的
#107行
pm.max_children=20  #fpm进程启动的最大进程数
#112行
pm.start_servers = 5  #动态方式下启动时默认开启的进程数,在最小和最大之间
#117行
pm.min_spare_servers = 2  #动态方式下最小空闲进程数
#122行
pm.max_spare_servers = 8  #动态方式下最大空闲进程数
 
#启动php-fpm,不可用于重启
/usr/local/php/sbin/php-fpm  -c /usr/local/php/lib/php.ini
#执行第一个命令后,就可以使用下面这条命令查看pid号重启php-fpm
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
netstat -anpt | grep 9000

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:48:04  更:2022-09-04 01:49:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 9:38:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码