Nginx(引擎x)是一個高性能的HTTP和反向代理服務,目前很大一部分網站均使用了Nginx作為WEB服務器,Nginx雖然非常強大,但默認情況下并不能阻擋惡意訪問,整理了一份常用的Nginx的屏蔽規則,希望對你有所幫助。

在開始之前,希望您已經熟悉的Nginx常用命令(如停止,重啟等操作)及排查nginx的錯誤日志,以免出現問題不知所措。如無特殊注明,的以下命令:均添加到server段內,修改nginx的配置之前務必做好備份,修改完畢后需要重載一次nginx的,否則不會生效。
比如將網站數據庫導出到站點根目錄進行備份,很有可能也會被別人下載,從而導致數據丟失的風險。以下規則可以防止一些常規的文件被下載,可根據實際情況增減。
location ~ \.(zip|rar|sql|bak|gz|7z)$ {
return 444;
}如果經常分析網站日志你會發現,一些奇怪的UA總是頻繁的來訪問網站,而這些UA對網站收錄毫無意義,反而增加服務器壓力,可以直接將其屏蔽。
if ($http_user_agent ~* (SemrushBot|python|MJ12bot|AhrefsBot|AhrefsBot|hubspot|opensiteexplorer|leiki|webmeup)) {
return 444;
}比如網站上傳目錄,通常存放的都是靜態文件,如果因程序驗證不嚴謹被上傳木馬程序,導致網站被黑。以下規則請根據自身情況改為您自己的目錄,需要禁止的腳本后綴也可以自行添加。
#uploads|templets|data 這些目錄禁止執行PHP
location ~* ^/(uploads|templets|data)/.*.(php|php5)$ {
return 444;
}如果網站被惡意灌水或CC攻擊,可從網站日志中分析特征IP,將其IP或IP段進行屏蔽。
#屏蔽192.168.5.23這個IP deny 192.168.5.23; #屏蔽192.168.5.* 這個段 denu 192.168.5.0/24;
再次強調,修改nginx的配置之前務必做好備份,修改完畢后需要重載一次nginx的,否則不會生效。
大部分上面規則報道查看444狀態碼而不是403,
因為444狀態碼在nginx的中有特殊含義,nginx的444狀態是直接由服務器中斷連接,不會向客戶端再返回任何消息。
比返回403更加暴力。