利用ngx_stream_return_module構建簡易 TCP/UDP 響應網關

一、模塊概述

ngx_stream_return_module 提供了一個極簡的指令:

return <value>;

在收到客戶端連接后,立即將 <value> 寫回并關閉連接。<value> 支持內嵌文本和內置變量(如 $time_iso8601$remote_addr 等),無需任何上游后端即可快速響應。

二、典型應用場景

  1. 心跳與健康檢查

    • 監控系統定期撥測 Nginx 端口,若返回預期字符串即視為“服務正常”。
  2. 調試與協議探測

    • 臨時搭建一個測試端口,快速查看客戶端發起連接所帶信息(配合 $remote_addr$proxy_protocol_addr)。
  3. 統一版本或配置查詢

    • 通過 $nginx_version、自定義靜態文本,告知客戶端當前網關版本或配置信息。
  4. 黑洞吸收

    • 對特定端口或 SNI,直接返回空或固定消息,拒絕后續業務流量。

三、指令語法

server {listen 12345;              # TCP/UDP 均可return <value>;
}
  • <value>

    • 文本:如 "pong\n"
    • 變量:如 $time_iso8601$remote_addr
    • 組合"${remote_addr} connected at ${time_local}\n"
  • 上下文:僅支持 stream { server { … } } 級別。

四、最小示例

  1. 返回當前 ISO 時間

    stream {server {listen 6000;return $time_iso8601 "\n";}
    }
    
    • 客戶端連入后立刻收到 2025-06-10T12:34:56+02:00
  2. Echo 客戶端 IP

    stream {server {listen 6001;return "Your IP: $remote_addr\n";}
    }
    
    • 便于診斷 NAT / PROXY 協議是否正確透傳。
  3. 固定心跳響應

    stream {server {listen 6002 udp;return "HEARTBEAT_OK";}
    }
    
    • 監控系統可采用 UDP 探測,無需維護 TCP 連接。

五、高級組合

  • 條件返回(配合 map

    stream {map $remote_addr $resp {10.0.0.0/8  "INTERNAL\n";default    "EXTERNAL\n";}server {listen 7000;return $resp;}
    }
    

    根據源地址段動態返回不同內容。

  • SNI 健康(TLS 不解密,僅 HTTP/2 示例)

    stream {server {listen 443 ssl;ssl_preread on;return "ServerName: $ssl_preread_server_name\n";}
    }
    

    在 TLS 握手后返回客戶端發來的 SNI。

六、注意事項

  1. 無異步或后端依賴

    • return 執行后即斷開連接,不支持延遲或異步邏輯。
  2. 變量可用性

    • 僅在 Stream 層可用的變量才會解析,如 $remote_addr$proxy_protocol_addr$time_iso8601
  3. 返回長度限制

    • 推薦返回值不超過緩沖區大小(默認 16 KB),否則會被截斷。
  4. 監控結合

    • 可在 access_log 中記錄 "$remote_addr return=$resp_status",配合 Prometheus/Loki 采集。

七、結語

ngx_stream_return_module 是 Nginx Stream 層最輕量的應答利器,適合任何需要 “即連即回” 的場景:從心跳檢測、健康探針,到快速調試、自定義協議探測,都能用極少配置快速落地。無需后端、無額外依賴,只需一行 return,即可讓你的流量網關多一份“秒回”能力。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/908928.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/908928.shtml
英文地址,請注明出處:http://en.pswp.cn/news/908928.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java如何權衡是使用無序的數組還是有序的數組

在 Java 中,選擇有序數組還是無序數組取決于具體場景的性能需求與操作特點。以下是關鍵權衡因素及決策指南: ?? 核心權衡維度 維度有序數組無序數組查詢性能二分查找 O(log n) ?線性掃描 O(n) ?插入/刪除需移位維護順序 O(n) ?直接操作尾部 O(1) ?內存開銷與無序數組相…

學習日記-day24-6.8

完成內容&#xff1a; 知識點&#xff1a; 1.網絡編程_TCP編程 ### 編寫客戶端1.創建Socket對象,指明服務端的ip以及端口號 2.調用socket中的getOutputStream,往服務端發送請求 3.調用socket中的getInputStream,讀取服務端響應回來的數據 4.關流public class Client {public…

JavaScript 核心對象深度解析:Math、Date 與 String

JavaScript 作為 Web 開發的核心語言&#xff0c;提供了豐富的內置對象來簡化編程工作。本文將深入探討三個重要的內置對象&#xff1a;Math、Date 和 String&#xff0c;通過詳細的代碼示例和綜合案例幫助你全面掌握它們的用法。 一、Math 對象 Math 對象提供了一系列靜態屬…

HarmonyOS開發:設備管理使用詳解

目錄 前言 設備管理概述 設備管理組成 1、電量信息 &#xff08;1&#xff09;導入模塊 &#xff08;2&#xff09;屬性信息 &#xff08;3&#xff09;常用屬性 &#xff08;4&#xff09;使用示例 2、設備信息 &#xff08;1&#xff09;導入模塊 &#xff08;2&a…

el-select下拉框 添加 el-checkbox 多選框

效果 vue <el-select v-model"value" multiple style"width: 100%" popper-class"select-popover-class" placeholder"請選擇試驗項目"><el-option v-for"item in options" :key"item.value" :value&qu…

Memory Repair (三)

Top-Level Verification and Pattern Generation 本節涵蓋 fuse box 編程、頂層 BISR&#xff08;內置自修復&#xff09;驗證以及生產測試 pattern 的生成 Fuse Box Programming 通過 BISR controller 對 fuse box 進行編程的兩種方法如下&#xff1a; ? 采用 Autonomous mod…

通過Wrangler CLI在worker中創建數據庫和表

官方使用文檔&#xff1a;Getting started Cloudflare D1 docs 創建數據庫 在命令行中執行完成之后&#xff0c;會在本地和遠程創建數據庫&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到數據庫&#xff1a; 現在&#xff0c;您的Cloudfla…

谷歌aab怎么轉 apk

一、環境搭建&#xff1a; 1、搭建 java 環境&#xff1b;2、安裝 AndroidStudio&#xff1b;3、下載 bundletool&#xff08;地址&#xff1a;Releases google/bundletool GitHub&#xff09;&#xff1b;4、確定本地有沒有簽名文件&#xff0c;mac電腦一般在/users/ 自己的…

04-初識css

一、css樣式引入 1.1.內部樣式 <div style"width: 100px;"></div>1.2.外部樣式 1.2.1.外部樣式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部樣式2 <!-- rel內表面引入的是style樣…

AWS EKS 集群日志上報觀測云實踐

AWS Lambda 介紹 AWS Lambda 是亞?遜提供的?種?服務器計算服務。它允許開發?員在?需管理服務器的情況下運?代碼。AWS Lambda 基于事件驅動的模型&#xff0c;當觸發指定的事件時&#xff0c;Lambda 會?動執?相應的代碼邏輯。 Amazon CloudWatch 日志 CloudWatch 日志…

瀏覽器指紋科普 | 端口掃描保護是什么?

&#x1f50d; 什么是“端口”&#xff1f; 每臺電腦都像一個辦公大樓&#xff0c;端口就像是不同的房間號。不同軟件&#xff08;比如瀏覽器、代理、遠程控制工具&#xff09;會用不同的端口來“對外溝通”。 比如&#xff1a; 瀏覽網頁可能用端口 80 或 443 用代理軟件或某…

傲軟錄屏:輕松錄制,高效分享

在數字內容創作和在線教育日益流行的今天&#xff0c;屏幕錄制已成為許多人表達創意、分享知識的重要方式。無論是制作教學視頻、記錄游戲過程&#xff0c;還是進行遠程會議記錄&#xff0c;一款簡單易用且功能強大的屏幕錄制軟件都是不可或缺的。傲軟錄屏正是這樣一款能夠滿足…

小程序查廣州樓盤網簽數據和備案價(免費)

目錄 一、網簽數據/銷控表查詢二、備案價和不利因素查詢三、如何體驗 一、網簽數據/銷控表查詢 二、備案價和不利因素查詢 三、如何體驗 #廣州樓盤備案價查詢 #網簽數據查詢 #廣州買房必看攻略 #小程序查廣州樓盤備案價

【HarmonyOS5】UIAbility組件生命周期詳解:從創建到銷毀的全景解析

?本期內容&#xff1a;【HarmonyOS5】UIAbility組件生命周期詳解&#xff1a;從創建到銷毀的全景解析 &#x1f3c6;系列專欄&#xff1a;鴻蒙HarmonyOS&#xff1a;探索未來智能生態新紀元 文章目錄 前言生命周期全景圖詳細狀態解析與最佳實踐&#x1f3ac; Create狀態&#…

【云計算系統】云計算中的計算幾何

一、云計算系統中的幾何算法 云計算系統在資源調度、空間數據處理、安全加密及大規模優化等場景中廣泛運用幾何算法以提升效率與精度。 空間數據處理與索引算法 ?空間索引算法(R樹、四叉樹)?? ?作用?:高效管理地理空間數據(如地圖坐標、三維點云),支持快速范圍查詢…

基于物聯網技術設計的設計室內寵物監護系統

目錄 項目開發背景設計實現的功能項目硬件模塊組成設計思路系統功能總結技術方案使用的模塊的技術詳情介紹預期成果總結 1. 項目開發背景 隨著科技的不斷進步&#xff0c;物聯網&#xff08;IoT&#xff09;技術逐漸滲透到生活中的各個方面&#xff0c;尤其在智能家居領域&am…

aurora與pcie的數據高速傳輸

設備&#xff1a;zynq7100&#xff1b; 開發環境&#xff1a;window&#xff1b; vivado版本&#xff1a;2021.1&#xff1b; 引言 之前在前面兩章已經介紹了aurora讀寫DDR,xdma讀寫ddr實驗。這次我們做一個大工程&#xff0c;pc通過pcie傳輸給fpga&#xff0c;fpga再通過aur…

產品經理入門到精通:01需求調研

一、需求調研 1、需求&#xff1a;用戶在某些方面需要得到某種幫助以達成目的。 2、調研&#xff1a;通過一些方法來了解某件事情的真相&#xff0c;也可以叫調查研究。 3、需求調研&#xff1a;通過觀察、訪談和體驗等方式&#xff0c;探究事物本質的過程。是需求誕生的開始…

【Android】Android 開發 ADB 常用指令

查看當前連接的設備 adb devices 連接設備 adb connect 設備IP 斷開已連接的設備 adb disconnect 設備IP 安裝應用 adb install 安裝包的路徑 卸載應用 adb uninstall 應用包名 查看已安裝的應用包名 adb shell pm list packages 查看已安裝的第三方應用包名 adb shell pm list…

Android 應用開發概述與環境搭建指南

Android 應用開發概述與環境搭建指南 Android 應用開發概述與環境搭建指南一、Android 開發概述&#xff08;一&#xff09;Android 平臺簡介&#xff08;二&#xff09;Android 開發特點&#xff08;三&#xff09;開發語言與技術棧 二、開發環境搭建&#xff08;Windows 系統…