【Nginx】Nginx代理WebSocket

1.websocket

WebSocket 是一種網絡通信協議,它提供了在單個 TCP 連接上進行全雙工(雙向)通信的能力

假設需求:

把 ws://192.168.0.1:8088/ws-api/websocket/pushData代理到ws://192.168.0.156:8888/websocket/pushData;同時,在轉發時去除ws-api前綴.

2.使用Nginx代理WebSocket

    # WebSocket 代理配置location ^~ /ws-api/ {proxy_pass http://192.168.1.156:8888/; # 寫真實的服務器地址proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade";proxy_set_header Host $host;proxy_read_timeout 86400;proxy_set_header X-Real-IP $remote_addr; # 傳遞客戶端真實IPproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
  • WebSocket 關鍵配置
  1. proxy_http_version 1.1:強制使用 HTTP 1.1 協議與后端通信。WebSocket 協議依賴 HTTP 1.1Upgrade 機制完成握手。Nginx 默認使用 HTTP 1.0 與后端通信,無法支持協議升級。
  2. proxy_set_header Upgrade $http_upgrade:將客戶端的 Upgrade 請求頭透傳給后端服務器。$http_upgrade 變量捕獲客戶端請求中的 Upgrade 頭(通常為 websocket)。后端服務器需通過 Upgrade: websocket 頭識別 WebSocket 握手請求。
  3. proxy_set_header Connection "upgrade":修改 Connection 請求頭為 upgrade,指示后端啟用協議升級。與 Upgrade 頭配合,告知后端需要將連接從 HTTP 升級為 WebSocket
  • 其他配置:
  1. proxy_read_timeout 86400設置長時間連接不超時;
  2. X-Real-IPX-Forwarded-For頭用于傳遞客戶端真實 IP,方便后端服務獲取客戶端信息。

!!!注意:ws://192.168.0.1:8088/ws-api/websocket/pushData 前面的 ws://192.168.0.1:8088 不用去掉,并且這個ip地址必須是當前nginx 服務器所在的ip地址才行。

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

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

相關文章

Spring AI Alibaba Graph使用案例人類反饋

1、Spring AI Alibaba Graph 是社區核心實現之一,也是整個框架在設計理念上區別于 Spring AI 只做底層原子抽象的地方,Spring AI Alibaba 期望幫助開發者更容易的構建智能體應用。基于 Graph 開發者可以構建工作流、多智能體應用。Spring AI Alibaba Gra…

本地部署jenkins持續集成

一、準備環境(jdk版本跟Tomcat版本要匹配) java jdk 環境(版本是11.0.21) jenkins war包(版本是2.440.3) Tomcat (版本是 9.0.84) 二、安裝步驟 1、安裝jdk環境 1)先安裝java環境,安裝完成后配置環境變量,參考上…

基于Java+Maven+Testng+Selenium+Log4j+Allure+Jenkins搭建一個WebUI自動化框架(1)搭建框架基本雛形

本次框架使用Maven作為代碼構建管理&#xff0c;引用了PO模式&#xff0c;將整體的代碼分成了頁面層、用例層、業務邏輯層。框架搭建流程&#xff1a;1、在pom.xml中引入依賴&#xff1a;<!-- https://mvnrepository.com/artifact/io.appium/java-client --> <depende…

從零構建MCP服務器:FastMCP實戰指南

引言&#xff1a;MCP協議與FastMCP框架 Model Context Protocol&#xff08;MCP&#xff09;是連接AI模型與外部服務的標準化協議&#xff0c;允許LLM&#xff08;如Claude、Gemini&#xff09;調用工具、訪問數據。然而&#xff0c;直接實現MCP協議需要處理JSON-RPC、會話管理…

基于FPGA的智能小車設計(包含代碼)/ 全棧FPGA智能小車:Verilog實現藍牙/語音/多傳感器融合的移動平臺

首先先聲明一下&#xff0c;本項目已經歷多輪測試&#xff0c;可以放心根據我的設計進行二次開發和直接套用&#xff01;&#xff01;&#xff01; 代碼有詳細的注釋&#xff0c;方便同學進行學習&#xff01;&#xff01; 制作不易&#xff0c;記得三連哦&#xff0c;給我動…

Object.defineProperties 詳解

Object.defineProperties 詳解 Object.defineProperties 是 JavaScript 中用于在一個對象上定義或修改多個屬性的方法。它是 Object.defineProperty 的復數版本&#xff0c;允許你一次性定義多個屬性。 基本語法 Object.defineProperties(obj, props)obj&#xff1a;要在其上定…

MyBatis-Plus:深入探索與最佳實踐

MyBatis-Plus作為MyBatis的增強版&#xff0c;已經在Java開發中得到了廣泛應用。它不僅繼承了MyBatis的所有功能&#xff0c;還提供了許多強大的擴展功能&#xff0c;幫助開發者提升開發效率和代碼質量。本文將深入探討MyBatis-Plus的高級特性及其在實際項目中的最佳實踐。一、…

勞斯萊斯數字孿生技術:重構航空發動機運維的綠色革命

在航空工業邁向智能化的浪潮中&#xff0c;勞斯萊斯以數字孿生技術為核心&#xff0c;構建了發動機全生命周期管理的創新范式。這項技術不僅重新定義了航空發動機的維護策略&#xff0c;更通過數據驅動的決策體系&#xff0c;實現了運營效率與生態效益的雙重突破。本文將從技術…

NPM組件 querypilot 等竊取主機敏感信息

【高危】NPM組件 querypilot 等竊取主機敏感信息 漏洞描述 當用戶安裝受影響版本的 querypilot 等NPM組件包時會竊取用戶的主機名、用戶名、工作目錄、IP地址等信息并發送到攻擊者可控的服務器地址。 MPS編號MPS-2kgq-v17b處置建議強烈建議修復發現時間2025-07-05投毒倉庫np…

創業商業融資計劃書PPT模版

創業商業融資計劃書PPT模版&#xff1a;https://pan.quark.cn/s/25a043e4339e

解決GitHub倉庫推送子文件夾后打不開的問題

從你描述的情況來看&#xff0c;IELTS_AI_Assessment 很可能被識別為了 Git 子模塊&#xff08;submodule&#xff09;&#xff0c;而不是普通文件夾&#xff0c;這會導致在 GitHub 上無法直接打開查看內容。以下是具體原因和解決辦法&#xff1a;為什么文件夾無法打開&#xf…

Web后端開發-請求響應

文章目錄概述請求Postman簡單參數原始方式SpringBootRequestParam注解小結實體參數數組集合參數日期參數Json參數路徑參數總結響應響應-案例概述 請求 Postman 簡單參數 原始方式 // 1. 簡單參數 // 原始方式RequestMapping("/simpleParam")public String …

Javascript基礎內容回顧—變量提升、事件循環和閉包等內容

以下是前端面試中 JavaScript 基礎易錯問題的詳解&#xff0c;結合常見考點和易混淆概念進行解析&#xff1a; ?? 一、變量作用域與提升 var vs let/const ? 變量提升&#xff1a;var 聲明的變量會提升到作用域頂部&#xff08;值為 undefined&#xff09;&#xff0c;而 …

UNIX程序設計基本概念和術語

unix體系結構從嚴格意義上說&#xff0c;可將操作系統定義為一種軟件&#xff0c;它控制計算機硬件資源&#xff0c;提供程序運行環境。我們通常將這種軟件稱為內核&#xff08;kernel&#xff09;&#xff0c;因為它相對較小&#xff0c;而且位于環境的核心。內核的接口被稱為…

【WEB】Polar靶場 16-20題 詳細筆記

目錄 十六.簽到題 十七.簽到 十八.session文件包含 PHP 偽協議&#xff08;PHP Stream Wrappers&#xff09; base64加解密獲取源代碼 Session文件包含 namenameShell 是什么&#xff1f; 十九.Dont touch me 二十.robots robots.txt 十六.簽到題 把didino改成didiy…

數據結構*搜索樹

什么是搜索樹 搜索樹是一種樹形數據結構&#xff0c;用于高效地存儲和檢索數據。其核心特點是每個節點包含一個鍵&#xff08;Key&#xff09;&#xff0c;并遵循特定的排序規則。常見的搜索樹有二叉搜索樹、自平衡二叉樹、多叉搜索樹等。AVL樹、紅黑樹、Splay樹都屬于自平衡二…

語音交互新紀元:Hugging Face LeRobot如何讓機器人真正“懂你”

機器人之言&#xff1a;早在2024年&#xff0c;Hugging Face正式進軍真實世界機器人應用領域&#xff0c;推出了開源機器人項目LeRobot。LeRobot不僅僅是一個模型庫&#xff0c;它是一個完整的機器人學習平臺&#xff0c;融合了模仿學習、強化學習、數據可視化以及仿真環境。其…

搭建個人博客系列--MySql

前期提要&#xff1a;搭建個人博客系列--docker-CSDN博客 目前已經擁有了docker所以只需要將MySql安裝在docker上即可。 一、在docker安裝mysql docker pull mysql 二、查詢docker內的mysql鏡像 三、啟動msql docker run -d -p 33060:3306 -v /home/mysql/conf:/mysql/conf.d…

【Spring】Spring Boot + OAuth2 + JWT + Gateway的完整落地方案,包含認證流程設計

Spring Boot OAuth2 JWT Gateway的完整落地方案&#xff0c;包含認證流程設計網關在服務中的使用一、整體架構設計二、核心組件實現1. OAuth2認證服務器&#xff08;auth-service&#xff09;2. JWT自定義增強&#xff08;存儲用戶信息&#xff09;三、Gateway全局攔截&…