NGINX优化与防盗链

  • nginx优化;优化项目6项

    • 网页压缩

      • 可以在http区域中取消压缩选项的注释;可添加其他的控制选项

        • gzip on:开启 gzip 压缩输出;

        • gzip_buffers 4 16k:表示申请 4 个单位为 16k 的内存作为压缩结果流缓存,默认值 是申请与原始数据大小相同的内存空间来存储 gzip 压缩结果;

        • gzip_http_version 1.0:用于设置识别 http 协议版本,默认是 1.1,目前大部分浏览 器已经支持 gzip 解压,但处理较慢,也比较消耗服务器 CPU 资源;

        • gzip_comp_level 2:用来指定 gzip 压缩比,1 压缩比最小,处理速度最快;9 压缩 比最大,传输速度快,但处理速度最慢,使用默认即可;

        • gzip_min_length1k:用于设置允许压缩的页面最小字节数;

        • gzip_vary on:选项可以让前端的缓存服务器缓存经过 gzip 压缩的页面。

        • gzip_types text/plain:压缩类型,是对哪些网页文档启用压缩功能;

          • text/文本,语言 image/图片

    • 超时断连

      • 避免客户端长期占用连接造成资源浪费

      • 在相应站点内添加:keepalive_timeout 65 180;

        • 前一个数字表示服务端的超时断连时间

        • 后一个数字表示客户端的超时断连时间,能让一些浏览器主动断开连接,减少服务端的资源浪费

    • 日志轮转

      • #!/bin/bash # Filename: fenge.sh 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}/test.com-access.log-$d kill -USR1 $(cat $pid_path) find $logs_path -mtime +30 |xargs rm -rf

        • 变量d:提取数字日期

        • logs_path:日志文件的存放路径

        • pid_path:nginxpid文件位置

        • 移动重命名

        • 删除超过30天的日志文件

        • xargs:可以读取标准输入和管道中的数据,用于弥补有些命令(如echo、kill、rm)不能从管道中读取数据的不足。

        • kill -usr1 所有连接都断开之后才会重新载入配置文件

      • 最后测试,并将该脚本添加到计划任务中

    • 网页缓存

      • 针对对象每个站点,所以相关配置要写在要设置缓存的站点下,也就是server下

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

          • ~ 正则表达式,区分大小写

          • 定义了要缓存的对象 定义了缓存对象所在的目录 定义了缓存对象保留的时间

            • 时间: s秒 m分钟 h小时 d天 w周 M月

    • 进程优化

        • 标识1:标识nginx要以那个用户去运行

          • 主进程(master)是以启动该服务的用户身份去运行 工作进程(worker)是以nginx程序用户去运行

        • 标识2:工作进程数,每一个进程独占一个内核,需要根据实际情况需求进行适应性调节.

          • 每一个工作进程占一个核心

        • 标识3:cpu亲和度,以二进制进行编号,二进制位数与核心有关。

          • 通过手动指定特定的cpu会提高性能匹配性

        • 标识4:事件驱动模块,每一个进程能处理多少连接数,与内存容量有关。

      • 用ps -elf | grep nginx 可以查看nginx运行进程

      • 用ps aux | grep nginx 可以查看nginx运行进程

      • 可以将worker_processes 值设置为auto

        • 当你的服务器为动态扩展的云环境,auto会自动识别可用的cpu核心数,动态的切换

    • 隐藏版本号

      • token(令牌)

        • 在主配置文件中添加: server_tokens off;

          • 表示关闭令牌显示:只会显示nginx

      • 修改源配置文件并进行重新编译

        • 源码包中src/core/nginx.h

          • core(核心)

          • 第一行:定义了版本号 第二行:定义了版本名称

            • 修改完毕后重新编译,进行重启后测试。(重载不生效或跟缓存有关)

              • 编译时需要注意,一般程序用户要在编译提前创建好。

    • 查看源码包中相关的文件可以看出默认安装哪些功能

      • 例:nginx

        • cat options | grep YES 默认开启的功能

    • nginx防盗链

      • 准备环境: 三台主机都有被盗链,与盗链主机的IP 都关闭防火墙, 被盗链主机准备nginx的服务器,盗链者随意,编写各自主页文件信息。并准备相关资源。

      • 书写防盗链规则

        • ocation ~* \.(gif|jpg|jpeg)$ { valid_referers *.benet.com benet.com; if ($invalid_referer) { rewrite ^/ http://www.benet.com/error.png; }

          • valid_referers:nginx会通就过查看referer自动和valid_referers后面的内容进行匹配,如果匹配到了就将$invalid_referer变量置0,如果没有匹配到,则将$invalid_referer变量置为1,匹配的过程中不区分大小写

    • FPM参数优化

      • FPM两种启动方式

        • Static 的方式可以使用 pm.max_children 指定启动的进程数量

        • Dynamic 方式的参数要根据服务器的内存与服务负载进行调整

      • 带入例子理解

        • pm=dynamic

        • pm.max_children=20

        • pm.start_servers=5

        • pm.min_spare_servers=2

        • pm.max_spare_servers=8

          • FPM 启动时有 5 个进程,最小空闲 2 个进程,最大空闲 8 个进程,最多可以有 20 个进程存在

以上就是对nginx服务器的基本优化,优化的项目大部分需要根据实际配置 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值