02.12 VeryNginx--一個友好的 Nginx 擴展程序.

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--一個友好的 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 文件洩露、目錄遍歷攻擊,並攔截常見的掃描工具。

VeryNginx--一個友好的 Nginx 擴展程序.

VeryNginx--一個友好的 Nginx 擴展程序.

Backend

每個 Backend 會引用一個 Matcher ,當 Matcher 命中時, 請求會通過 Backend 進行處理

目前已經實現了以下 Backend

  • Proxy Pass 將請求反向代理到其它服務器
  • Static File 使用本地文件處理請求

訪問統計

VeryNginx 可以統計網站每個URI的訪問情況,包括每個URI的:

  • 總請求次數
  • 各狀態碼次數
  • 返回總字節數
  • 每請求平均字節數
  • 總響應時間
  • 平均響應時間

並且可以按各種規則排序進行分析。

VeryNginx--一個友好的 Nginx 擴展程序.


分享到:


相關文章: