VeryNginx
nginx基本上每個公司都會用到的負載均衡軟件。今天介紹一個nginx的擴展工具,可以幫助我們更直觀的看到nginx的運行情況。
VeryNginx 是一個功能強大而對人類友好的 Nginx 擴展程序.
開源地址:https://github.com/alexazhou/VeryNginx
介紹
VeryNginx 基於 lua_nginx_module(openrestry) 開發,實現了高級的防火牆、訪問統計和其他的一些功能。 集成在 Nginx 中運行,擴展了 Nginx 本身的功能,並提供了友好的 Web 交互界面。
VeryNginx在線實例
http://alexazhou.xyz/vn/index.html
用戶名 / 密碼: verynginx / verynginx
詳細配置說明見:VeryNginx Github WiKi
Nginx 運行狀態分析
- 每秒請求數
- 響應時間
- 網絡流量
- 網絡連接數
自定義行為
VeryNginx 包含強大的自定義功能,可以做很多事情
自定義行為包含兩部分, Matcher 和 Action 。 Matcher 用來對請求進行匹配, Action 為要執行的動作
這樣的優勢在於把所有的前置判斷整合在Matcher裡一起來實現了,使複雜(組合)規則的實現變成了可能
Matcher
一個 Matcher 用來判斷一個 Http 請求是否符合指定的條件, 一個 Matcher 可以包含一個或者多個約束條件,目前支持以下幾種約束:
- Client IP
- Host
- UserAgent
- URI
- Referer
- Request Args
當一個請求沒有違反 Matcher 中包含的全部條件時,即命中了這個 Matcher
Action
每個 Action 會引用一個 Matcher ,當 Matcher 命中時, Action 會被執行
目前已經實現了以下 Action
- Scheme Lock 將訪問協議鎖定為 Https 或者 Http
- Redirect 對請求進行重定向
- URI Rewrite 對請求的 URI 進行內部重寫
- Browser Verify 通過set-cookies 和 js 驗證客戶端是否為瀏覽器,並攔截非瀏覽器流量。本功能可能會阻攔搜索引擎爬蟲,建議僅在被攻擊時開啟,或者針對搜索引擎編寫特別的規則。
- Frequency Limit 訪問頻率限制
- Filter(waf) 過濾器
因為 Matcher 可以對請求進行細緻的匹配,所以結合 Filter Action,就可以實現一個高級的WAF,可以利用Matcher中所有的條件來對請求進行過濾,並返回指定狀態碼
VeryNginx 預置了常用的過濾規則,可以在一定程度上阻止常見的 SQL 注入、Git 及 SVN 文件洩露、目錄遍歷攻擊,並攔截常見的掃描工具。
Backend
每個 Backend 會引用一個 Matcher ,當 Matcher 命中時, 請求會通過 Backend 進行處理
目前已經實現了以下 Backend
- Proxy Pass 將請求反向代理到其它服務器
- Static File 使用本地文件處理請求
訪問統計
VeryNginx 可以統計網站每個URI的訪問情況,包括每個URI的:
- 總請求次數
- 各狀態碼次數
- 返回總字節數
- 每請求平均字節數
- 總響應時間
- 平均響應時間
並且可以按各種規則排序進行分析。
閱讀更多 IT技術圈 的文章