nginx网站安全配置

  • A+
所属分类:Nginx
## 这里取得原始用户的IP地址
map $http_x_forwarded_for  $clientRealIp {
    ""    $remote_addr;
    ~^(?P[0-9\.]+),?.*$    $firstAddr;
}
   
## 针对原始用户 IP 地址做限制
limit_conn_zone $clientRealIp zone=TotalConnLimitZone:20m ;
limit_conn  TotalConnLimitZone  50;
limit_conn_log_level notice;
   
## 针对原始用户 IP 地址做限制
limit_req_zone $clientRealIp zone=ConnLimitZone:20m  rate=10r/s;
#limit_req zone=ConnLimitZone burst=10 nodelay;
limit_req_log_level notice;
   
## 具体服务器配置
server {
    listen   80;
    location ~ \.php$ {
                ## 最多 5 个排队, 由于每秒处理 10 个请求 + 5个排队,你一秒最多发送 15 个请求过来,再多就直接返回 503 错误给你了
        limit_req zone=ConnLimitZone burst=5 nodelay;
   
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        include    fastcgi_params;
    }  
   
}

这里说明一下,limit_conn_zone ,limit_conn ,limit_req_zone,limit_req   可以根据你产品的需求进行修改。经过ab的测试:

ab -c 100 -t 10 http://localhost/test.php

没修改配置文件之前的访问日志,看看这时候的访问日志

修改了配置文件之后,加上 nodelay之后超过 burst大小的请求就会直接 返回503,如图

 

这样可以防止别人开很多进程访问你的网站。把你的网站搞垮~~~

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
ssh

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: