Blog.050 Nginx 服务优化 与 防盗链

本章目录 

 

 

 

 

1. 隐藏版本号
  1.1 操作步骤
  1.2 操作流程
2. 缓存时间
  2.1 操作步骤
  2.2 操作流程
3. 日志切割
  3.1 操作步骤
  3.2 操作流程
4. 连接超时
  4.1 操作步骤
  4.2 操作流程
5. 更改进程数
  5.1 操作步骤
  5.2 操作流程
6. 配置网页压缩
  6.1 操作步骤
  6.2 操作流程
7. 配置防盗链
  7.1 操作步骤
  7.2 操作流程
8. fpm 参数优化
  8.1 操作步骤

 

 

 

 

1. 隐藏版本号
  1.1 操作步骤

    (1)显示响应报文首部信息

    可以使用 Fiddler 工具抓取数据包,查看 Nginx 版本,也可以在 CentOS 中使用命令 curl -I http://192.168.80.200 显示响应报文首部信息。

1 curl -I http://192.168.80.200

 

    (2)修改主配置文件

 1 vim /usr/local/nginx/conf/nginx.conf
 2 
 3 
 4 ```handlebars
 5 http {
 6     include       mime.types;
 7     default_type  application/octet-stream;
 8     server_tokens off;                                #添加,关闭版本号
 9     ......
10 }
11 
12 systemctl restart nginx
13 curl -I http://192.168.---.---

 

    (3)再次查看版本号是否被隐藏
    (4)修改用户和组

1 vim /usr/local/nginx/conf/nginx.conf
2 
3 user nginx nginx;                                 #取消注释,修改用户为 nginx ,组为 nginx
4 
5 systemctl restart nginx
6 curl -I http://192.168.80.10

 

  1.2 操作流程

    (1)显示响应报文首部信息


    (2)修改主配置文件


    (3)再次查看版本号是否被隐藏

 


2. 缓存时间
  2.1 操作步骤

  • 在Linux系统中,打开火狐浏览器,右击点查看元素
  • 选择 网络 —> 选择 HTML、WS、其他
  • 访问 IP ,双击200响应消息查看响应头中包含 Cahce-Control:max-age=86400 表示缓存时间是 86400 秒。
  • 也就是缓存一天的时间,一天之内浏览器访问这个页面,都是用缓存中的数据,而不需要向 Nginx 服务器重新发出请求,减少了服务器的使用带宽。

    (1)修改主配置文件

 1 vim /usr/local/nginx/conf/nginx.conf
 2 
 3 http {
 4 ......
 5     server {
 6     ...... 
 7         location / {
 8             root html;
 9             index index.html index.htm;
10         }
11         
12         location ~ \.(gif|jpg|jepg|png|bmp|ico)$ {         #加入新的 location,以图片作为缓存对象
13             root html;
14             expires 1d;                                    #指定缓存时间,1天
15         }
16 ......
17     }
18 }

 

    (2)放入图片并编辑网页
    (3)检查配置并重启服务

1 nginx -t
2 
3 systemctl restart nginx

 

  2.2 操作流程

    (1)修改主配置文件


    (2)放入图片并编辑网页


    (3)检查配置并重启服务


3. 日志切割
  3.1 操作步骤

    (1)编写脚本

 1 vi /opt/test.sh
 2 
 3 #!/bin/bash
 4 # Filename: test.sh
 5 d=$(date -d "-1 day" "+%Y%m%d")                                                #显示前一天的时间
 6 logs_path="/var/log/nginx"
 7 pid_path="/usr/local/nginx/logs/nginx.pid"
 8 [ -d $logs_path ] || mkdir -p $logs_path                                     #创建日志文件目录
 9 mv /usr/local/nginx/logs/access.log ${logs_path}/kgc.com-access.log-$d        #移动并重命名日志文件
10 kill -USR1 $(cat $pid_path)                                                    #重建新日志文件
11 find $logs_path -mtime +30 -exec rm -rf {} \;                                #删除30天之前的日志文件
12 #find $logs_path -mtime +30 |xargs rm -rf 

 

    (2)执行脚本,查看日志是否生成

1 chmod +x /opt/test.sh
2 /opt/test.sh
3 ls /var/log/nginx
4 ls/usr/local/nginx/logs/access.log 
5 
6 crontab -e
7 0 1 * * * /opt/test.sh

 

    Tips:

  • 在linux操作系统中,每个文件都有很多的时间参数,其中有三个比较主要,分别是ctime,atime,mtime
  • ctime(status time): 当修改文件的权限或者属性的时候,就会更新这个时间,ctime并不是createtime,更像是change time, 只有当更新文件的属性或者权限的时候才会更新这个时间,但是更改内容的话是不会更新这个时间。
  • atime(accesstime): 当使用这个文件的时候就会更新这个时间。
  • mtime(modification time):当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别。


  3.2 操作流程

    (1)编写脚本


    (2)执行脚本,查看日志是否生成


4. 连接超时
  4.1 操作步骤

    (1)修改主配置文件

1 vim /usr/local/nginx/conf/nginx.conf
2 
3 http {
4 ...... 
5     keepalive_timeout 65 180;
6     client_header_timeout 80;
7     client_body_timeout 80;
8 ...... 
9 }

 

    (2)检查配置并重启服务

1 nginx -t
2 
3 systemctl restart nginx

 

  4.2 操作流程

    (1)修改主配置文件


    (2)检查配置并重启服务


5. 更改进程数
  5.1 操作步骤

    (1)查看 cpu 核数和 nginx 主进程中包含几个子进程

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

 

    (2)修改主配置参数

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

 

    (3)重启服务并查看


  5.2 操作流程

    (1)查看 cpu 核数和 nginx 主进程中包含几个子进程


    (2)修改主配置参数


    (3)重启服务并查看


6. 配置网页压缩
  6.1 操作步骤

    (1)修改主配置文件

 1 vim /usr/local/nginx/conf/nginx.conf
 2 
 3 http {
 4 ...... 
 5    gzip on;                            #取消注释,开启gzip压缩功能
 6    gzip_min_length 1k;                 #最小压缩文件大小
 7    gzip_buffers 4 16k;                 #压缩缓冲区,大小为4个16k缓冲区
 8    gzip_http_version 1.1;              #压缩版本(默认1.1,前端如果是squid2.5请使用1.0 9    gzip_comp_level 6;                  #压缩比率
10    gzip_vary on;                       #支持前端缓存服务器存储压缩页面
11    gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss image/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json;        #压缩类型,表示哪些网页文档启用压缩功能
12 ...... 
13 }

 

    (2)修改网页显示内容

1 cd /usr/local/nginx/html
2 #先将图片文件传到/usr/local/nginx/html目录下
3 
4 vim index.html
5 
6 ...... 
7 <img src="1.jpg"/>                #网页中插入图片
8 </body>
9 </html>

 

    (3)重启服务并测试

 

    测试:

  • 在Linux系统中,打开火狐浏览器,右击点查看元素
  • 选择 网络 —> 选择 HTML、WS、其他
  • 访问 http://192.168.80.10 ,双击200响应消息查看响应头中包含 Content-Encoding: gzip

 

  6.2 操作流程

    (1)修改主配置文件


    (2)修改网页显示内容


    (3)重启服务并测试


7. 配置防盗链
  7.1 操作步骤

    (1)修改主配置文件

 1 vim /usr/local/nginx/conf/nginx.conf
 2 
 3 http {
 4 ......
 5     server {
 6     ......
 7         location ~*\.(jpg|gif|swf)$ {
 8             valid_referers *.kgc.com kgc.com;
 9             if ( $invalid_referer ) {
10                 rewrite ^/ http://www.kgc.com/3.png;
11                 #return 403;                                # 可以不设防盗链,设置返回403
12             }
13         }
14     ......
15     }
16 }

 

    (2)源主机网页准备

 1 cd /usr/local/nginx/html
 2 
 3 vim index.html
 4 
 5 ...... 
 6 <img src="1.jpg"/>
 7 </body>
 8 </html>
 9 
10 echo "192.168.---.--- www.kgc.com" >> /etc/hosts 

 

    (3)源主机临时添加域名和IP的映射关系
    (4)盗链主机网页准备

 1 cd /var/www/html
 2 
 3 vim index.html
 4 
 5 ...... 
 6 <img src="http://www.kgc.com/1.jpg"/>
 7 </body>
 8 </html>
 9 
10 echo "192.168.---.--- www.kgc.com" >> /etc/hosts 
11 echo "192.168.---.--- www.clj.com" >> /etc/hosts 

 

    (5)盗链主机临时添加域名和IP的映射关系


  7.2 操作流程

    (1)修改主配置文件


    (2)源主机网页准备


    (3)源主机临时添加域名和IP的映射关系
    (4)盗链主机网页准备


    (5)盗链主机临时添加域名和IP的映射关系
    (6)浏览器中验证


8. fpm 参数优化
  8.1 操作步骤

 1 vim /usr/local/php/etc/php-fpm.conf 
 2 
 3 pid = run/php-fpm.pid
 4 
 5 vim /usr/local/php/etc/php-fpm.d/www.conf
 6 
 7 --96行--
 8 pm = dynamic                  #fpm进程启动方式,动态的
 9 --107行--
10 pm.max_children=20            #fpm进程启动的最大进程数
11 --112行--
12 pm.start_servers = 5          #动态方式下启动时默认开启的进程数,在最小和最大之间
13 --117行--
14 pm.min_spare_servers = 2      #动态方式下最小空闲进程数
15 --122行--
16 pm.max_spare_servers = 8      #动态方式下最大空闲进程数
17 
18 kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`            #重启php-fpm
19 netstat -anpt | grep 9000

 

 

 

 

 -

 

posted @ 2021-08-19 13:50  洛洛你好  阅读(49)  评论(0)    收藏  举报