NGINX阻止指定ip的請求問題及解決方案
業(yè)務(wù)場景:
web頁面做了一個功能,在websocket請求失敗的情況,會定時向服務(wù)端進行重試進行建立連接。
存在的問題是即使這個web系統(tǒng)沒人操作的情況下,只要頁面沒有關(guān)閉,即使系統(tǒng)超時了頁面也沒有發(fā)生跳轉(zhuǎn),這就有點像對服務(wù)器進行攻擊一樣。
問題分析:
經(jīng)過分析,從上述描述的情況來看,有如下問題:
1、系統(tǒng)超時的時候,頁面應(yīng)該要一個跳轉(zhuǎn),例如跳轉(zhuǎn)到登陸頁面。如果這一步做了,也會減少websocket不斷的向服務(wù)器發(fā)送請求,超時的情況下發(fā)送的websocket都是無效請求
2、在某種情況,websocket請求失敗,想要重試再次建立連接,從想法上是沒有問題的,但是問題的關(guān)鍵就在于沒有閥值的控制,例如可以重試5次,如果發(fā)現(xiàn)還是連接不上,那么就終止重試請求
解決方案:
1、系統(tǒng)超時的時候,頁面跳轉(zhuǎn)到登陸頁面就可以了。前端可以根據(jù)檢測操作事件,根據(jù)時間來控制,如果超時了,那么就自動跳轉(zhuǎn)。
2、重試次數(shù)控制,增加業(yè)務(wù)邏輯就可以了,也沒有特別的。
3、因為這種不斷的請求就會導(dǎo)致服務(wù)端很痛苦,尤其是那種系統(tǒng)超時過來的無效的請求。如果想要臨時阻止這種情況,NGINX上是可以配置的。
1)、識別請求IP
可以到NGINX的日志文件中取查看,logs/access.log, 下面是摘出來一條日志:
192.0.79.100 - - [31/Jan/2024:11:39:34 +0800] "GET /prod-api/getRouters HTTP/1.0" 200 7495 "域名XXXX" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36" "192.0.79.10"
我從上面可以看出,請求來源于192.0.79.100
2)、配置想要阻止的請求地址
location / { deny 192.0.79.100; }
3)、重啟NGINX
./nginx -s reload
4)、測試請求
當192.0.79.100機器再次往這個NGINX發(fā)起請求的時候,發(fā)現(xiàn)頁面報錯了,那么就代表以及成功阻攔了請求
到此這篇關(guān)于NGINX如何阻止指定ip的請求的文章就介紹到這了,更多相關(guān)nginx 阻止指定ip的請求內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nginx隱藏響應(yīng)頭server信息和版本號信息的操作方法
文章介紹了兩種隱藏或修改Nginx響應(yīng)頭中server信息的方法:一種是通過修改配置文件全局段添加`server_tokens off`,另一種是重新編譯Nginx并修改Banner信息,兩種方法分別適用于傳統(tǒng)部署和需要更靈活自定義的情況,需要的朋友可以參考下2025-02-02nginx上設(shè)置html不緩存的方法實現(xiàn)
前端項目發(fā)布以后,經(jīng)常會遇到訪問不到最新的版本,這主要是由于我們項目的入口文件index.html被瀏覽器或者代理緩存了,本文主要介紹了nginx上設(shè)置html不緩存,具有一定的參考價值,感興趣的可以了解一下2024-02-02nginx自定義變量與內(nèi)置預(yù)定義變量的使用
這篇文章主要介紹了nginx自定義變量與內(nèi)置預(yù)定義變量的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06Nginx出現(xiàn)504 Gateway Time-out的解決方法
nginx訪問出現(xiàn)504 Gateway Time-out,一般是由于程序執(zhí)行時間過長導(dǎo)致響應(yīng)超時,本文就來介紹一下解決方法,感興趣的可以了解一下2023-10-10