Nginx优化与防盗链

一、隐藏/伪装版本号

  • 实际生产环境中 将版本号暴漏版本号在外面 也会造成一定的安全隐患 所以可以将其进行隐藏或者伪装为别的服务
  • 通过抓包工具Fiddler 可以查看nginx版本号 也可以通过http访问的报文头部查看
  • 也可以简便的方法查看
使用curl命令
curl -I http://192.168.100.129

在这里插入图片描述

1. 隐藏版本号

  • 可以通过修改配置文件来实现
vim /usr/local/nginx/conf/nginx.conf
http {
    include       mime.types;
    default_type  application/octet-stream;
    #20行左右;添加;关闭版本号
    server_tokens off; #此行为手动添加
    ......
}


systemctl restart nginx

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

2. 伪装版本号

  • 需要将源码文件修改 并重新编译安装
修改源码文件
vim /opt/nginx-1.12.2/src/core/nginx.h
#13行;修改版本号
#define NGINX_VERSION "1.1.1"
#14行;修改为windos的http服务
#define NGINX_VER "IIS" NGINX_VERSION

重新编译安装
cd /opt/nginx-1.12.2/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install

修改配置文件(直接使用这一步则不用修改)  
vim /usr/local/nginx/conf/nginx.conf
http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens on;
    # 这是上面修改的一行 这里是伪装 所以需要将版本号显示出来 可以删除此行或改为 on
	......
}

systemctl restart nginx

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

二、页面缓存

1. 修改配置文件

同样是修改配置文件来实现

vim /usr/local/nginx/conf/nginx.conf
http {
......
	server {
	...... 
        location / {
            root   html;
            index  index.html index.htm;
        }

		#加入新的 location,以图片作为缓存对象 匹配规则都是常见图片的后缀
        location ~ \.(gif|jpg|jepg|png|bmp|ico)$ {
            root html;
            #指定缓存时间,1天
            expires 1d;
        }
......
	}
}


systemctl restart nginx.service

在这里插入图片描述

2. 拖入图片到首页目录 并修改首页内容

在这里插入图片描述

3. 重启服务测试

在这里插入图片描述

三、日志分割

1. 编写日志分割脚本并添加进周期性任务

vim fenge.sh
#!/bin/bash
#设置变量
#设置显示前一天的时间的变量
day=$(date -d "-1 day" "+%F")
logs="/var/log/nginx"
pid=`cat /usr/local/nginx/logs/nginx.pid`

#创建日志文件目录
[ -d $logs || mkdir -p $logs
#移动并重命名日志文件
mv /usr/local/nginx/logs/access.log ${logs}/xxx.com-access.log-{$day}

#重建日志文件
kill -USR1 $pid
#删除30天前的日志文件
find $logs -mtime +30 -exec rm -rf {} \; ps:
关于时间参数mtime的解释写在下面



执行脚本并查看日志是否生成
source fenge.sh
ls /var/log/nginx
ls /usr/local/nginx/logs/

添加进周期性任务  让其每天自动执行脚本进行日志分割
crontab -e
0 1 * * * /fenge.sh

日志脚本解释如下:
在这里插入图片描述
查看验证:
在这里插入图片描述
添加周期性任务
在这里插入图片描述
Linux下文件三个时间参数:

  • modification time(mtime):内容修改时间

    这里的修改时间指的是文件的内容发生变化,而更新的时间。

  • change time(ctime):状态修改时间

    这里的修改时间指的是文件的属性或者权限发生变化,而更新的时间。

  • access time(atime):最后访问时间

    这里的访问时间是指文件被读取,而更新的时间。

在Linux下操作命令分别为:

  • ls -l 获取文件最后一次内容修改的时间(modification time(mtime))

  • ls -lu 获取文件最后一次访问的时间(change time(ctime))

  • ls -lc 获取文件最后一次状态的改变时间(access time(atime))

  • 在Linux下文件没有创建时间这个概念,若文件从创建后不曾修改过则可认为创建时间=修改时间,若文件创建后状态也不曾改变过则可认为创建时间=改变时间,若文件创建后不曾被读取过则可认为创建时间=访问时间。但是,上述情况基本上是不可能的,也就是说几乎不可能获取到文件的创建时间。

四、连接超时 keeplive

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

1. 修改配置文件

vim /usr/local/nginx/conf/nginx.conf
http {
...... 
    keepalive_timeout 60 300;
    client_header_timeout 80;
    client_body_timeout 80;
...... 
}


systemctl restart nginx.service

关于keepalive_timeout ; client_header_timeout ; client_body_timeout 解释:
在这里插入图片描述
在这里插入图片描述

五、更改进程数

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


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

worker_processes  4;  #修改的进程数应为核心数*2或相同

#添加;设置每个进程由不同cpu处理,0001表示启用第一个CPU内核,0010表示启用第二个CPU内核,依此类推
worker_cpu_affinity 0001 0010 0100 1000;

在这里插入图片描述
在这里插入图片描述
PS:最多八个cpu 再多就不会得到负载改善了 反而会降低稳定性
在这里插入图片描述

六、网页压缩

1. 修改配置文件

vim /usr/local/nginx/conf/nginx.conf
http {
......
    gzip  on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 6;
    gzip_vary on;
    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;
...... 
}

systemctl restart nginx

解释如下:
在这里插入图片描述

2. 重启服务验证

在这里插入图片描述

七、配置防盗链

1. 修改配置文件(原服务器)

vim /usr/local/nginx/conf/nginx.conf
http {
......
	server {
	......
        location ~*\.(jpg|gif|swf)$ {
          valid_referers *.test.com test.com;
          if ( $invalid_referer ) {
          rewrite ^/ http://www.test.com/error.png;
          #return 403;
          }
        }
	......
	}
}

在这里插入图片描述
解释如下:

  • valid_referers :设置信任的网站,可以正常使用图片;
    后面的网址或者域名 :referer 中包含相关字符串的网址;
  • if语句:如果链接的来源域名不在valid_referers所列出的列表中,$invalid_referer为1,则执行后面的操作,即进行重写或返回 403 页面。

2. 准备首页内容

在这里插入图片描述

3. 准备一个盗链主机

  • 需要部署完nginx服务
  • 准备 盗链主机的首页内容
  • 准备hosts映射
echo "192.168.100.129 www.xyz.com" >> /etc/hosts
echo "192.168.100.101  www.xxx.com" >> /etc/hosts

将需要盗用的图片url放入自己的首页内容内
在这里插入图片描述

4. 盗链主机测试

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

八、fpm参数优化

  • Nginx的PHP解析功能实现如果是交由FPM处理的,为了提高PHP的处理速度,可对FPM模块进行参数的调整

  • FPM模块参数调整,要根据服务器的内存与服务负载进行调整

  • 启动fpm进程方式 有两种

  1. static:将产生固定数量的fpm进程 static使用pm.max_children指定启动进程数
  2. dynamic:将以动态的方式产生fpm进程 dynamic根据服务器内存与服务负载进行调整 通过pm参数指定
vim /usr/local/php/etc/php-fpm.d/www.conf

#启动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`

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值