带你了解nginx的优化和防盗链

配置Nginx隐藏版本号

1、隐藏Nginx版本号,避免安全漏洞泄漏
2、Nginx隐藏版本号的方法
·修改配置文件法
·修改源码法

隐藏版本号项目

隐藏版本号(第一种方法)


[root@server1 ~]# vi /etc/nginx.conf 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@server1 ~]# curl -I http://localhost
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 30 Nov 2020 16:31:39 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 612
Last-Modified: Mon, 30 Nov 2020 06:09:10 GMT
Connection: keep-alive
ETag: "5fc48c86-264"
Accept-Ranges: bytes

[root@server1 ~]# 

隐藏版本号(第二种方法)

[root@server1 ~]# vi /etc/nginx.conf 

在这里插入图片描述


[root@server1 ~]# vi nginx-1.12.2/src/core/nginx.h

在这里插入图片描述


[root@server1 ~]# systemctl stop nginx   //停止服务
[root@server1 ~]# cd nginx-1.12.2/
[root@server1 nginx-1.12.2]# make && make install   //编译安装
[root@server1 nginx-1.12.2]# systemctl start nginx    //开启nginx
[root@server1 nginx-1.12.2]# curl -I http://localhost
HTTP/1.1 200 OK
Server: IIS/1.1.1
Date: Mon, 30 Nov 2020 16:42:25 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 612
Last-Modified: Mon, 30 Nov 2020 06:09:10 GMT
Connection: keep-alive
ETag: "5fc48c86-264"
Accept-Ranges: bytes

[root@server1 nginx-1.12.2]# 

配置Nginx网页缓存时间

·当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度
·一般针对静态网页设置,对动态网页不设置缓存时间

网页缓存时间项目

局部的设置

[root@server1 ~]# vi /etc/nginx.conf 

在这里插入图片描述

        location ~ \.(gif|jpg|jepg|png|bmp|ico)$ {
                         root htm;
                         expires 1d;
        }

[root@server1 ~]# cd /usr/local/nginx/html/
[root@server1 html]# ls -lh
[root@server1 html]# vi index.html 

在这里插入图片描述

测试

在这里插入图片描述
在这里插入图片描述

[root@server1 html]# systemctl start nginx    开启nginx服务
[root@server1 html]# netstat -anpt | grep nginx   检索nginx服务
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      32777/nginx: master 
tcp        0      0 192.168.188.10:80       192.168.188.1:1814      ESTABLISHED 32780/nginx: worker 
[root@server1 html]# 

在这里插入图片描述

全局的设置

·设置方法:
修改配置文件,在http段、 或者server段、 或者location段加入对特定内容的过期参数

[root@server1 ~]# vi /etc/nginx.conf 

在这里插入图片描述
测试抓包
在这里插入图片描述

日志分割

1、随着Nginx运行时间增加,日志也会增加。为了方便掌握Nginx运行状态,需要时刻关注Nginx日志文件
2、太大的日志文件对监控是一个大灾难
·定期进行日志文件的切割
3、Nginx自身不具备日志分割处理的功能,但可以通过Nginx信号控制功能的脚本实现日志的自动切割
4、通过Linux的计划任务周期性地进行日志切割

编写脚本进行日志切割的思路
·设置时间变量
·设置保存日志路径
·将目前的日志文件进行重命名
·重建新日志文件
·删除时间过长的日志文件
·设置cron任务,定期执行脚本自动进行日志分割

时间变量


[root@server1 ~]# date   获取日期
20201201日 星期二 01:17:25 CST
[root@server1 ~]# date "+%Y%m%d"   今天的日期
20201201
[root@server1 ~]# date -d "-1 day" "+%Y%m%d"   //昨天的日期
20201130
[root@server1 ~]# date -d "+1 day" "+%Y%m%d"    //明天的日期
20201202
[root@server1 ~]# 

查看进程号


[root@server1 ~]#cd /usr/local/nginx/logs/
[root@server1 logs]#ls -lh
总用量 108K
-rw-r--r-- 1 root root   0 1130 15:00 aa.access.log
-rw-r--r-- 1 root root 20K 1130 22:59 aa.com.access.log
-rw-r--r-- 1 root root 540 1130 17:31 ab.com.access.log
-rw-r--r-- 1 root root 12K 121 01:12 access.log
-rw-r--r-- 1 root root 66K 121 01:12 error.log
-rw-r--r-- 1 root root   6 121 01:12 nginx.pid
[root@server1 logs]#cat nginx.pid   //进程号
33197

日志分割脚本


[root@server1 logs]#vi fenge.sh[root@server1 logs]#vi fenge.sh

在这里插入图片描述


#!/bin/bash
# 日志分割
d=$(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}/aa.com.access.log-$d
kill -HUP $(cat $pid_path)
find $logs_path -mtime +60 | xargs rm -rf
[root@server1 logs]#chmod +x fenge.sh 
[root@server1 logs]#./fenge.sh 
[root@server1 logs]#ls -lh
总用量 100K
-rw-r--r-- 1 root root   0 1130 15:00 aa.access.log
-rw-r--r-- 1 root root 20K 1130 22:59 aa.com.access.log
-rw-r--r-- 1 root root 540 1130 17:31 ab.com.access.log
-rw-r--r-- 1 root root   0 121 08:48 access.log
-rw-r--r-- 1 root root 68K 121 08:48 error.log
-rwxr-xr-x 1 root root 311 121 08:47 fenge.sh
-rw-r--r-- 1 root root   6 121 01:12 nginx.pid
[root@server1 logs]#

[root@server1 ~]#cd /var/log/nginx/
[root@server1 nginx]#ls -lh
总用量 12K
-rw-r--r-- 1 root root 12K 121 01:12 aa.com.access.log-2020-11-30
[root@server1 nginx]#

查看sh的绝对路径

[root@server1 nginx]#which sh
/usr/bin/sh

编写任务计划


[root@server1 nginx]#crontab -e    
0 1 * * * /usr/bin/sh /root/fenge.sh

在这里插入图片描述
查看任务计划


[root@server1 nginx]#crontab -l 
0 1 * * * /usr/bin/sh /root/fenge.sh
注:

  *    *    *    *     *
分钟 小时 日期 月份 星期
kill -QUIT  结束进程    -HUP   平滑重启类似reload   -USR1  日志分隔    -USR2  平滑升级

nginx实现连接超时

1、为避免同一客户端长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间
2、超时参数

超时的参数
Keepalive_ timeout 设置连接保持超时时间
Client header timeout 指定等待客户端发送请求头的超时时间
Client body_ _timeout 设置请求体读超时时间

连接超时项目

[root@server1 nginx]#vi /etc/nginx.conf 

在这里插入图片描述
keepalive_timeout 65 180; 前面参数是服务器主动关闭的超时时间(默认是65秒),后面参数是客户机浏览器主动关闭的时间
client_header_timeout 80; 等待客户端发送请求头的超时时间超时会发送408错误
client_body_timeout 80; 设置客户端发送请求体超时时间

[root@server1 nginx]#nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@server1 nginx]#systemctl stop nginx
[root@server1 nginx]#systemctl start nginx

抓包结果
在这里插入图片描述

更改Nginx运行进程数

1、在高并发场景,需要启动更多的Nginx进程以保证快速响应,以处理用户的请求,避免造成阻塞
2、更改进程数的配置方法:
·修改配置文件,修改进程配置参数

3、修改配置文件的worker_ processes参数
·一般设为CPU的个数或者核数
·在高并发情况下可设置为CPU个数或者核数的2倍
4、增加进程数,可减少了系统的开销,提升了服务速度
5、使用ps aux查看运行进程数的变化情况
6、默认情况,Nginx的多 个进程可能跑在一-个CPU上,可以分配不同的进程给不同的CPU处理,充分利用硬件多核多CPU
7、在一台4核物理服务器,进行配置,将进程进行分配

更改进程数项目


[root@server1 ~]#cat /proc/cpuinfo | grep -c "physical"    
4

[root@server1 ~]#vi /etc/nginx.conf 

在这里插入图片描述


[root@server1 ~]#ulimit -n 65535 >> /etc/rc.local 
[root@server1 ~]#nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@server1 ~]#systemctl stop nginx
[root@server1 ~]#systemctl start nginx
[root@server1 ~]#ps aux | grep nginx
root      38085  0.0  0.0  20500   700 ?        Ss   09:48   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx     38086  0.0  0.1  24260  2740 ?        S    09:48   0:00 nginx: worker process
nginx     38087  0.0  0.1  24260  2740 ?        S    09:48   0:00 nginx: worker process
nginx     38088  0.0  0.1  24260  2740 ?        S    09:48   0:00 nginx: worker process
nginx     38089  0.0  0.1  24260  2740 ?        S    09:48   0:00 nginx: worker process
nginx     38090  0.0  0.1  24260  2740 ?        S    09:48   0:00 nginx: worker process
nginx     38091  0.0  0.1  24260  2740 ?        S    09:48   0:00 nginx: worker process
nginx     38092  0.0  0.1  24260  2740 ?        S    09:48   0:00 nginx: worker process
nginx     38093  0.0  0.1  24260  2740 ?        S    09:48   0:00 nginx: worker process
root      38103  0.0  0.0 112676   984 pts/2    S+   09:49   0:00 grep --color=auto nginx
[root@server1 ~]#

实现网页的压缩的功能

1、Nginx的ngx_ http gzip_ module压缩模块提供对文件内容压缩的功能
2、允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装
3、可在配置文件中加入相应的压缩功能参数对压缩性能进行优化
4、压缩功能参数
·gzip on:开启gzip压缩输出
·gzip_ min_ length 1k:设置允许压缩的页面最小字节数
·gzip_ buffers 4 16k:申请4个单位为16k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果
·gzip_ http_ version 1.0:设置识别http协议版本,默认是1.1,目前大部分浏览器已经支持gzip解压,但处理较慢,也比较消耗服务器CPU资源
5、压缩功能参数(续)
·gzip_comp_ level 2:指定gzip压缩比,1压缩比最小,处理速度最快; 9压缩比最大,传输速度快,但处理速度最慢
·gzip_types text/plain: 压缩类型,对哪些网页文档启用压缩功能
·gzip_vary on:让前端缓存服务器缓存经过gzip压缩的页面
6、将以上的压缩功能参数加入到主配置文件httpd配置中段
7、重启服务, 查看网页压缩功能开启结果

网页压缩的项目

[root@server1 ~]#vi /etc/nginx.conf 

在这里插入图片描述
gzip on; 开启gzip压缩功能
gzip_min_length 1k; 压缩阀值
gzip_buffers 4 16k; buffer大小为4个16k缓存区大小
gzip_http_version 1.1; 压缩版本
gzip_comp_level 6; 压缩比率,最小为1,处理速度快,传输速度慢,9最大压缩比,处理速度慢,传输速度快
gzip_types text/plain text/css text/javascript application/x-javascript application/javascript application/json application/x-httpd-php application/xml image/jpg image/jpeg image/gif image/png;
gzip_disable “MSIE [1-6].”; 配置禁用gzip条件,支持正则,表示ie6以下不启用gzip
gzip_vary on; 选择支持very header可以让前端的缓存服务器缓存经过gzip压缩的页面

[root@server1 ~]#nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@server1 ~]#systemctl stop nginx
[root@server1 ~]#systemctl start ngin

抓包的结果
在这里插入图片描述

实现防盗链

1、在企业网站服务中,- -般都要配置防盗链功能,以避免网站内容被非法盗用,造成经济损失
2、Nginx防盗链功能也非常强大。默认情况下,只需要进行简单的配置,即可实现防盗链处理

防盗链项目

[root@server1 ~]#vi /etc/nginx.conf 

在这里插入图片描述


        location ~* \.(jpg|gif|swf)$ {
             valid_referers none blocked *.aa.com aa.com 192.168.188.10;
             if ($invalid_referer) {
             rewrite ^/ http://www.aa.com/error.png;
         }
       }

[root@server1 html]# vi index.html 
<html>
<head>
<titly>--压缩测试页--</titly>
<body><h1>This is Otter's father</h1></body>
<img src=otter.png / >
</head>
</html>


[root@server1 ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@server1 ~]# systemctl stop nginx
[root@server1 ~]# systemctl start nginx

测试

在这里插入图片描述
软件抓包发现图片重定向是主机地址,效果正确

再开个主机192.168.188.20

[root@server1 ~]# setenforce 0
[root@server1 html]# yum -y install httpd
[root@server1 html]# vi /var/www/html/index.html
i<html>
<head>
<titly>--压缩测试页--</titly>
<body><h1>song</h1></body>
<img src="http://192.168.188.10/otter.png" / >
</head>
</html>

[root@server1 ~]# systemctl start httpd
[root@server1 ~]# vi /etc/hosts
192.168.188.10   www.aa.com
[root@server1 ~]# cd /var/www/html/
[root@server1 html]# ls -lh
总用量 412K
-rw-r--r-- 1 root root 312K 12月  1 12:02 baocuo.jpg
-rw-r--r-- 1 root root  117 12月  1 11:57 index.html
-rw-r--r-- 1 root root  96K 12月  1 12:02 otter.png

在这里插入图片描述

对FPM模块进行参数优化

1、Nginx的PHP解析功能实现如果是交由FPM处理的,为了 提高PHP的处理速度, 可对FPM模块进行参数的调整根据服务器的内存与服务负载,调整FPM模块参数
2、启动fpm进程方式,通过pm参数指定
·static:将产生固定数量的fpm进程
·dynamic:将以动态的方式产生fpm进程
3、FPM优化参数
·Static的方式的参数:
◆pm.max_ children: 指定启动的进程数量
·Dynamic方式的参数:
◆pm.max_ children: 指定启动进程数的最大值
◆pm.start servers: 动态方式下初始的fpm进程数
◆pm.min_ spare_ servers: 动态方式下最小的fpm空闲进程数
◆pm.max_ spare_ servers: 动态方式下最大的fpm空闲进程数


[root@server1 etc]# cd /usr/local/php/etc/php-fpm.d/
[root@server1 php-fpm.d]# ls -lh
总用量 40K
-rw-r--r-- 1 root root 19K 1130 22:24 www.conf
-rw-r--r-- 1 root root 19K 1130 20:23 www.conf.default
[root@server1 php-fpm.d]# vi www.conf

在这里插入图片描述
在这里插入图片描述

pm = dynamic
pm.max_children = 20 static模式下空闲进程数上限,大于下面的值
pm.start_servers = 5 动态方式下默认开启的进程数,在最小和最大之间
pm.min_spare_servers = 2 动态方式下最少空闲进程数
pm.max_spare_servers = 8 动态方式下最大空闲进程数

[root@server1 php-fpm.d]# ps aux | grep php-fpm
root      29885  0.0  0.2 214220  4016 ?        Ss   13:23   0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
nobody    29886  0.0  0.3 216368  5976 ?        S    13:23   0:00 php-fpm: pool www
nobody    29887  0.0  0.2 216368  5036 ?        S    13:23   0:00 php-fpm: pool www
root      32485  0.0  0.0 112680   984 pts/1    S+   14:29   0:00 grep --color=auto php-fpm
[root@server1 php-fpm.d]# pkill php-fpm
[root@server1 php-fpm.d]# /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
[root@server1 php-fpm.d]# ps aux | grep php-fpm
root      32501  0.0  0.2 214236  4132 ?        Ss   14:30   0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
nobody    32502  0.0  0.2 216320  3920 ?        S    14:30   0:00 php-fpm: pool www
nobody    32503  0.0  0.2 216320  3920 ?        S    14:30   0:00 php-fpm: pool www
nobody    32504  0.0  0.2 216320  3920 ?        S    14:30   0:00 php-fpm: pool www
nobody    32505  0.0  0.2 216320  3920 ?        S    14:30   0:00 php-fpm: pool www
nobody    32506  0.0  0.2 216320  3924 ?        S    14:30   0:00 php-fpm: pool www
root      32508  0.0  0.0 112676   980 pts/1    S+   14:30   0:00 grep --color=auto php-fpm
[root@server1 php-fpm.d]# 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值