• nginx根据http_user_agent防DDOS


    前端squid反向代理到nginx
    nginx根据http_user_agent防DDOS
    首先查看访问日志,找出可疑访问 找到http_user_agent 的特征,然后再作过滤
    "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; MyIE 3.01)Cache-Control: no-store, must-revalidate"
    if ($http_user_agent ~ must-revalidate) {
    return 503;
    }
    #这样就返回503错误
    location = / {
     include proxy.conf;
     if ( $http_user_agent ~* "MSIE 5.01" ) {
     proxy_pass http://www.qq.com;
     #access_log /usr/local/nginx/logs/k.log main;
          }
     proxy_pass http://windows.abc.com;
     }
    #判断一下user-agent,如果是MSIE 5.01就把它丢到另外一个地方去就可以了,比如指向www.qq.com,看看能不能抗得住,哈哈
    proxy_hide_header Cache-Control;
    最后开回Cache-Control,访问一下页面
    这下这个链接就缓存到前端squid了,应用服务器不会死机了
    #########################################################
    nginx中location模块的详细参数介绍
    Nginx的Location可以有以下几个匹配:
    1. =   严格匹配这个查询。如果找到,停止搜索。 
    2. ^~ 匹配路径的前缀,如果找到,停止搜索。
    3. ~   为区分大小写的正则匹配   
    4. ~* 为不区分大小写匹配
    5.!~和!~*分别为区分大小写不匹配及不区分大小写不匹配
     
    文件及目录匹配
    * -f和!-f用来判断是否存在文件
    * -d和!-d用来判断是否存在目录
    * -e和!-e用来判断是否存在文件或目录
    * -x和!-x用来判断文件是否可执行
     
    一些可用的全局变量
    $args
    $content_length
    $content_type
    $document_root
    $document_uri
    $host
    $http_user_agent
    $http_cookie
    $limit_rate
    $request_body_file
    $request_method
    $remote_addr
    $remote_port
    $remote_user
    $request_filename
    $request_uri
    $query_string
    $scheme
    $server_protocol
    $server_addr
    $server_name
    $server_port
    $uri
     
    rewrite后面的flag可以是:
    last 
    break 
    redirect 
    permanent
     
    proxy_pass http://localhost:80;
    proxy_set_header Host $host;
    可以自动改变转发以后的域名信息
  • 相关阅读:
    vue全局变量定义和修改
    vue格式化显示json数据
    javascript cookie 操作
    bootsrap Collapse用法
    django form 的内置字段类型
    django(channel)到 ubuntu
    django 模型操作
    django 单点登录思路-装饰器
    浏览器右下角提示实现
    django websocket
  • 原文地址:https://www.cnblogs.com/top5/p/1934845.html
Copyright © 2020-2023  润新知