Tengine是由淘寶Servers Platform Team基於Nginx修改的一個服務器,中午趁着大家都在睡覺,粗粗地拿了代碼看下都修改了哪些東西。個人認為里邊比較有用的修改是input filter和sysguard,由於只是粗看,沒有留意細節,可能有錯漏。以下是分代碼目錄的修改記錄筆記:
0. others
1) 配置默認值的修改ON->OFF之類的
2) bug/logic相關的修改,還細看就不細說了。
1. core
1) 增加configure的dump
2) 增加一此log方式或方法
3) 增加內存池管理realloc
4) 增加字符串處理ngx_atoll,修改unescape_uri以支持www的form
5) 增加log的另一種時間格式
2. event
1) 增加統計信息request_time
2) 修改/增加ssl加密方式
3. http
1) 增加input filter
2) 增加server tag用於response中Server這個header的設置,還有admin/info等用於修改一些頁面信息-_-
4. http/module
1) 增加ngx_http_concat_module模塊,用於多個靜態文件的合並返回
2) 增加ngx_http_footer_filter_module模塊,用於在末尾插入一段東西
3) 修改ngx_http_headers_filter_module模塊,按type設置expire time
4) 修改ngx_http_limit_req_module模塊,增加白名單,規則似乎也有修改
5) 修改ngx_http_stub_status_module模塊,記錄request time
6) 增加ngx_http_sysguard_module模塊,用於在cpu/mem資源不足時,報警並執行action(可認為主動拒絕服務)
5. misc
1) 增加ngx_backtrace_module打印堆棧信息,便於與signal相關(SIGXXX)出錯時的問題定位。
6. os
1) 增加realloc
2) 增加了pipe
3) 增加ngx_syslog_module,用於向syslog日志服務器寫日志
4) 增加了cpu/mem的信息獲取方法
7. mail
沒管
2012-02-14 UPDATE:
關於ngx_syslog,因為我們也有類似的需求(但不是針對syslog服務),自己此前想過這個功能的實現,看了下Tengine發現與我要求的還有不同:該功能是同步阻塞的,發送出錯也是直接失敗,這些應該可以改進,比如異步,非阻塞,出錯時區分中斷、阻塞或其他錯誤等。