nginx stream模組初探

2021-08-16 14:04:04 字數 2100 閱讀 7931

nginx從1.9.0開始,新增加了乙個stream模組,用來實現四層協議的**、**或者負載均衡等。這完全就是搶haproxy份額的節奏,鑑於nginx在7層負載均衡和web service上的成功,和nginx良好的框架,stream模組前景一片光明。

stream模組預設沒有編譯到nginx, 編譯nginx時候 ./configure –with-stream 即可

官網:stream模組用法和http模組差不多,關鍵的是語法幾乎一致。熟悉http模組配置語法的上手更快 

以下是乙個配置了tcp負載均衡和udp(dns)負載均衡的例子, 有 server,upstream塊,而且還有server, 

hash, listen, proxy_pass等指令,如果不看最外層的stream關鍵字,還以為是http模組呢。

worker_processes auto;

error_log logs/error.stream.log info;

events

stream

upstream dns

server

server

}

注意:變數支援是從 nginx 1.11.2版本開始的

$binary_remote_addr

二進位制格式的客戶端位址

$bytes_received

從客戶端接收到的位元組數

$bytes_sent

發往客戶端的位元組數

$hostname

連線網域名稱

$msec

毫秒精度的當前時間

$nginx_version

nginx 版本

$pid

worker程序號

$protocol

通訊協議(udp or tcp)

$remote_addr

客戶端ip

$remote_port

客戶端埠

$server_addr

接受連線的伺服器ip,計算此變數需要一次系統呼叫。所以避免系統呼叫,在listen指令裡必須指定具體的伺服器位址並且使用引數bind。

$server_port

接受連線的伺服器端口

$session_time

毫秒精度的會話時間(版本1.11.4開始)

$status

會話狀態(版本1.11.4開始), 可以是一下幾個值:

200成功

400不能正常解析客戶端資料

403禁止訪問

500伺服器內部錯誤

502閘道器錯誤,比如上游伺服器無法連線

503服務不可用,比如由於限制連線等措施導致

$time_iso8601

iso 8601時間格式

$time_local

普通日誌格式的時間戳

目前官網上列出的第三方模組、簡直就是http模組的映象、比如access模組訪問控制ip和ip段,map模組實現對映、 geo模組實現地理位置對映、等等。使用這些模組的時候一定要看是哪個版本才支援的、比如log模組,只有在nginx-1.11.4才支援。

ngx_stream_core_module

ngx_stream_access_module

ngx_stream_geo_module

ngx_stream_geoip_module

ngx_stream_js_module

ngx_stream_limit_conn_module

ngx_stream_log_module

ngx_stream_map_module

ngx_stream_proxy_module

ngx_stream_realip_module

ngx_stream_return_module

ngx_stream_split_clients_module

ngx_stream_ssl_module

ngx_stream_ssl_preread_module

ngx_stream_upstream_module

ngx_stream_upstream_hc_module

nginx stream模組初探

nginx從1.9.0開始,新增加了乙個stream模組,用來實現四層協議的 或者負載均衡等。這完全就是搶haproxy份額的節奏,鑑於nginx在7層負載均衡和web service上的成功,和nginx良好的框架,stream模組前景一片光明。stream模組預設沒有編譯到nginx,編譯ngi...

Nginx stream模組初探

nginx從1.9.0開始,新增加了乙個stream模組,用來實現四層協議的 或者負載均衡等。這完全就是搶haproxy份額的節奏,鑑於nginx在7層負載均衡和web service上的成功,和nginx良好的框架,stream模組前景一片光明。stream模組預設沒有編譯到nginx,編譯ngi...

初探phpcms模組

我們可以在 找到他的目錄結構 我們要開發的東東 也就是模組 就在 phpcms modules 下面 如果沒有什麼特別的 在開發乙個模組之前先要按照目錄結構建立好相關目錄並且設計好資料庫表結構 比方說 我們建立乙個模組叫做我的模組 my test 下面應該是mytest下的目錄結構 mytest c...