nginx 限制对代理HTTP资源的访问

nginx 限制对代理HTTP资源的访问

详情参照官网:https://docs.nginx.com/nginx/admin-guide/security-controls/controlling-access-proxied-http

限制连接数

使用 limit_conn_zone 伪指令定义密钥并设置共享内存区域的参数(工作进程将使用该区域共享密钥值的计数器)。

http{
……
limit_conn_zone $binary_remote_addr zone=addr:10m;
……
} 

使用 limit_conn 限制并发数。

location /download/ {
     limit_conn addr 1;
}

示例截图
在这里插入图片描述在这里插入图片描述在这里插入图片描述

限制请求率

速率限制可用于防止DDoS攻击,或防止上游服务器同时被太多请求淹没。该方法基于以下算法:请求以各种速率到达存储桶,并以固定速率离开存储桶。

  • 键-用于区分一个客户端与另一个客户端的参数,通常是一个变量
  • 共享内存区域-保留这些键的状态的区域的名称和大小(“泄漏存储桶”)
  • rate-每秒请求数(r/s)或每分钟请求数()中指定的请求速率限制r/m(“漏斗排放”)。每分钟请求数用于指定小于每秒一个请求的速率。

通过 limit_req_zone 伪指令设置
通过 limit_req 参数调用

http  { 
    # ... 
    # zone = one -> 键,10m -> 共享内存区域的大小,rate = 1r / s  ->  每秒处理一个请求
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

    server {
        #...
		# 
        location /download/{
            limit_req zone=one;
        }
    }
}

示例截图
在这里插入图片描述

处理过多的请求

伪指令 limit_reqburst 参数设置等待以指定速率处理的过多请求的最大数量,超出突发限制的请求将被拒绝并显示503错误。:
消息队列的处理方式,先进先出。

http {
    #...

    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

    server {
        #...

        location /search/ {
            limit_req zone=one burst=5;
        }
    }
}

如果在流量突发期间不需要延迟请求,请添加 nodelay 参数:

这个参数会在排队上限有空余时(前提是按照限定的速率处理完后,例如上例,一秒处理一个请求,在一秒内,就算请求处理完,队列也不会释放,会等待到达规定时间,再释放队列,这时队列才有空闲,空闲的数量是,定义的处理请求的数量,当然前提是已经处理完毕的请求数量),将超出限制的请求,加入排队队列中等待处理。

http {
    #...

    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

    server {
        #...

        location /search/ {
            limit_req zone=one burst=5 nodelay;
        }
    }
}

示例截图
在这里插入图片描述
在这里插入图片描述

限制带宽

要限制每个连接的带宽,请使用 limit_rate 指令:

location /download/ {
    limit_rate 50k;
}

使用此设置,客户端将能够通过单个连接以最大50千字节/秒的最大速度下载内容。

示例截图
在这里插入图片描述

自动索引

下载方便 autoindex on;

location / {     
	autoindex on;
	}

示例截图
在这里插入图片描述

expire缓存配置

Nginx expires 缓存配置,缓存可以降低网站带宽,加速用户访问,设置缓存存放时间。
root 伪指令指定将用于搜索文件的根目录。为了获得请求文件的路径,NGINX将请求URI附加到root伪指令指定的路径。

location ~ .*\.(gif|jpg|png)$ {
     expires 365d;     
     root /www; 
     }

示例截图
在这里插入图片描述

日志轮询

  • 执行脚本
# cat nginxlog.sh  

#!/bin/bash 
cd /usr/local/nginx/logs && mv access.log access_$(date +%F -d -1day).log 
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
  • 加入定时任务
00 00 * * * /opt/scripts/nginxlog.sh &> /dev/null
  • 为了安全,日志目录不需要给你nginx用户访问权限
chmod -R 700 /usr/local/nginx/logs

示例截图
在这里插入图片描述

日志筛选记录

禁用不必要的日志记录,以节省磁盘IO的消耗 access_log

location ~ .*\.(js|jpg|jpeg|png|css|bmp|gif)$ {
 	access_log off; 
 	}

示例截图
在这里插入图片描述在这里插入图片描述

中文乱码

charset utf-8;

示例截图
在这里插入图片描述在这里插入图片描述

ip 访问限制

  • 通过参数 allow 允许,和 deny 拒绝,来限制。
location / {
 	allow 172.25.9.250; 	
 	deny all; }
  • 也可以用 if 判断语句
if ($remote_addr = 172.25.0.254) {
 	return 403; 
 	}

示例截图
在这里插入图片描述

防止域名恶意解析到服务器IP

通过 return 返回相应状态码实现。

server {
  listen 80;
  server_name   _;
  return 500;  } 

示例截图
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

重定向

  • 通过 rewrite 参数定义重定向的路径,permanent 表示永久重定向。
server {
  listen 80;
  server_name   _;
  rewrite ^(.*) http://www.westos.org permanent;
  } 
  • 80重定向443
server {
 	listen 80;
 	server_name www.westos.org;
 	rewrite ^/(.*)$ https://www.westos.org/$1 permanent;
 	}

示例截图
在这里插入图片描述在这里插入图片描述

  • www.westos.org/bbs 重定向bbs.westos.org
# 只会重定向到 bbs.westos.org
rewrite ^/bbs$ http://bbs.westos.org permanent;
# 会重定向到 bbs.westos.org 下路径(子路径来源,原路径 bbs.westos.org 后面路径)
rewrite ^/bbs/(.*)$ http://bbs.westos.org/$1 permanent;

示例截图
在这里插入图片描述在这里插入图片描述

  • bbs.westos.org 重定向 www.westos.org/bbs
 if ($host = "bbs.westos.org"){
  	rewrite ^/(.*)$ http://www.westos.org/bbs/$1 permanent;
   }

示例截图
在这里插入图片描述

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

防盗链

location ~ \.(jpg|png)$ {
                 valid_referers none blocked www.westos.org;                 
                 if ($invalid_referer) {                         
                 return 403;                         
                 #rewrite ^/ http://www2.westos.org/daolian.jpg;                 }    

示例截图
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值