您好,登錄后才能下訂單哦!
django項目遭遇cc攻擊,不要驚慌,這里推薦兩招簡單實用的技巧。
項目Nginx作為http接入層,分發到django應用,啟動10個uwsgi worker。
今日突然發現,網頁打開卡頓,打開server一看,cpu100%。
打開uwsgi的log,發現某一個IP進行了大量的請求,占用了worker。
這里總結下兩種解決方法:
1.設置nginx黑名單
vi blockip.conf創建文件,輸入:
deny x.x.x.x;
編輯nginx.conf, 在http{}內添加:
include blockip.conf;
驗證配置:
[root@server nginx]# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
重啟nginx:
nginx -s reload
2.django內添加middleware
RequestBlockingMiddleware.py
import time from django.core.exceptions import PermissionDenied from django.utils.deprecation import MiddlewareMixin MAX_REQUEST_PER_SECOND=2 #每秒訪問次數 class RequestBlockingMiddleware(MiddlewareMixin): def process_request(self,request): now=time.time() request_queue = request.session.get('request_queue',[]) if len(request_queue) < MAX_REQUEST_PER_SECOND: request_queue.append(now) request.session['request_queue']=request_queue else: time0=request_queue[0] if (now-time0)<1: raise PermissionDenied('Forbidden user agent') request_queue.append(time.time()) request.session['request_queue']=request_queue[1:]
setting.py中注冊:
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'common.middleware.RequestBlockingMiddleware', #在sessions之后,auth之前 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
不足100行代碼,log里再也沒有對方的IP出現,相信對方正在某個小黑屋的電腦前氣得跺腳吧
以上這篇nginx黑名單和django限速,最簡單的防惡意請求方法分享就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。