nginx.conf配置文件做各种拦截

做的项目需要二级等保测试,各种奇葩的安全要求,基本都是在nginx实现的。特此记录下。


#user  nobody;
worker_processes  1;

pid       /var/log/nginx/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    client_max_body_size 2048M;

    sendfile        on;
 
    keepalive_timeout  65;
        server_tokens off;


 
    server {
        listen      80;
        server_name  192.168.**.**;
  
         if ($request_method !~* GET|POST) {     #拦截除GET和POST外的所有请求
            return 403;
          }
    if ($http_Host !~* ^192.168.**.**$)    #拦截除192.168.**.**外的所有请求的host
          {
             return 400;
           }

    if ($request_uri ~ '\.\.\/'){   #请求的URL不能包含../,测试burp拦截路径并加上../也能请求成功。
            return 400;
           }

    valid_referers none blocked 192.168.**.**;
     if ($invalid_referer) {   #拦截除192.168.**.**以外的所有请求的referer,
           return 400;
       }

    set $origin_flag 0;
    if ( $http_origin ~ http://192.168.**.**){   
            set $origin_flag "${origin_flag}1";
      }
      if ( $http_origin = ''){
            set $origin_flag "${origin_flag}1";
      }
      if ($origin_flag != "01"){    #拦截除192.168.**.**以外的所有请求的Origin
                  return 400;
        }


    

      location /{
              root   /usr/share/nginx/html;
                index  index.html index.htm;
         try_files $uri $uri/ /index.html;
           }

    location /static{
            set $flag 0;
                  if ($request_uri ~ \.(js|png)$ ){   #禁止把拦截到的JS文件和PNG文件用浏览器打开
                             set $flag "${flag}1";   
                   }                             
                 if ($http_referer = ''){
                                   set $flag "${flag}1";
                              }
                            if ($flag = "011"){
                                 return 403;
                              }

            

              root   /usr/share/nginx/html;
                index  index.html index.htm;
       
           }
    location /abc {
            proxy_pass   http://192.168.**.**:8888/;
        proxy_set_header        X-Real-IP       $remote_addr;
                }
    location /sgcc/aaa {
              proxy_pass   http://192.168.**.**:88888/aaa;
        proxy_set_header        X-Real-IP       $remote_addr;
             }
    location /abc/bbb {
                proxy_pass   http://192.168.**.**:8888/bbb ;
        proxy_set_header        X-Real-IP       $remote_addr;
              }

    location /abc/ccc{
                proxy_pass   http://192.168.**.**:8888/ccc;
              proxy_set_header        X-Real-IP       $remote_addr;
        proxy_intercept_errors on;
        error_page   500 /50x.html;
        
              }

    location /abc/ddd {
                proxy_pass   http://192.168.**.**:8888/ddd ;
              proxy_set_header        X-Real-IP       $remote_addr;

                      }
 


 


        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }


}
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值