使用Nginx實現Websocket代理轉發的完整教程

Websocket代理轉發作為Nginx的一個重要功能,能夠幫助我們快速解決前端無法直接連接後端的問題。在這篇文章中,我們將詳細介紹如何使用Nginx實現Websocket代理轉發的完整教程。本文主要分為以下幾個部分:Nginx環境配置、WebSocket模塊配置、一個簡單的WebSocket應用實例、WebSocket代理轉發配置。

一、Nginx環境配置

在開始使用Nginx進行Websocket的代理轉發之前,我們需要準備好Nginx環境。下面我們以Ubuntu為例,教大家如何安裝Nginx:

1、執行以下命令更新系統源:sudo apt-get update

2、執行以下命令安裝Nginx:sudo apt-get install nginx

3、默認情況下ubuntu開機是不會自動啟動Nginx服務的,可以使用以下命令手動啟動:sudo service nginx start

二、WebSocket模塊配置

為了支持Websocket,我們需要在Nginx中引入WebSocket模塊。下面是配置WebSocket模塊的方法:

1、打開Nginx的配置文件nginx.conf,配置方法如下:sudo vim /etc/nginx/nginx.conf

2、在http塊中添加以下代碼,將WebSocket模塊引入到Nginx中:

http{
    ...
    include /etc/nginx/conf.d/*.conf;
    ...
    }

3、在Nginx的conf.d目錄下新建文件websocket.conf,並在文件中添加以下配置:

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

三、一個簡單的WebSocket應用實例

為了在Nginx中測試Websocket的代理轉發功能,我們需要先準備一個簡單的Websocket應用實例。下面是一個簡單的Websocket應用實例的代碼:

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 3000 });

wss.on('connection', function (ws) {
  console.log('client connected');
  ws.on('message', function (message) {
    console.log('received: %s', message);
    ws.send(`You sent -> ${message}`);
  });
  ws.on('close', function () {
    console.log('client disconnected');
  });
});

四、WebSocket代理轉發配置

下面我們將在Nginx中實現Websocket代理轉發,將前端與後端進行連接。這裡以將ws://localhost:3000連接到後端的Node.js應用為例,展示如何實現WebSocket代理轉發:

1、打開Nginx的配置文件nginx.conf,配置方法如下:sudo vim /etc/nginx/nginx.conf

2、在http塊中添加以下代碼:

upstream backend {
    server 127.0.0.1:3000;
    keepalive 64;
}

server {
    listen 8080;
    server_name _;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    location / {
        proxy_pass http://backend/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Host $host;
    }
}

3、保存Nginx.conf文件,並使用以下命令將配置文件重載到Nginx中:sudo nginx -s reload

通過配置,現在我們已經可以通過Nginx實現Websocket代理轉發了,客戶端可以通過ws://localhost:8080連接到後端的Node.js應用。

五、總結

本文詳細介紹了如何使用Nginx實現Websocket代理轉發的完整教程,包括Nginx環境配置、WebSocket模塊配置、一個簡單的WebSocket應用實例和WebSocket代理轉發配置。通過這篇文章的學習,相信讀者已經可以輕鬆的實現WebSocket代理轉發了。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/219960.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-09 11:02
下一篇 2024-12-09 11:02

相關推薦

  • MQTT使用教程

    MQTT是一種輕量級的消息傳輸協議,適用於物聯網領域中的設備與雲端、設備與設備之間的數據傳輸。本文將介紹使用MQTT實現設備與雲端數據傳輸的方法和注意事項。 一、準備工作 在使用M…

    編程 2025-04-29
  • Python3.6.5下載安裝教程

    Python是一種面向對象、解釋型計算機程序語言。它是一門動態語言,因為它不會對程序員提前聲明變量類型,而是在變量第一次賦值時自動識別該變量的類型。 Python3.6.5是Pyt…

    編程 2025-04-29
  • 如何在Java中拼接OBJ格式的文件並生成完整的圖像

    OBJ格式是一種用於表示3D對象的標準格式,通常由一組頂點、面和紋理映射坐標組成。在本文中,我們將討論如何將多個OBJ文件拼接在一起,生成一個完整的3D模型。 一、讀取OBJ文件 …

    編程 2025-04-29
  • 打造照片漫畫生成器的完整指南

    本文將分享如何使用Python編寫一個簡單的照片漫畫生成器,本文所提到的所有代碼和技術都適用於初學者。 一、環境準備 在開始編寫代碼之前,我們需要準備一些必要的環境。 首先,需要安…

    編程 2025-04-29
  • Deepin系統分區設置教程

    本教程將會詳細介紹Deepin系統如何進行分區設置,分享多種方式讓您了解如何規劃您的硬盤。 一、分區的基本知識 在進行Deepin系統分區設置之前,我們需要了解一些基本分區概念。 …

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Python中文版下載官網的完整指南

    Python是一種廣泛使用的編程語言,具有簡潔、易讀易寫等特點。Python中文版下載官網是Python學習和使用過程中的重要資源,本文將從多個方面對Python中文版下載官網進行…

    編程 2025-04-29
  • Qt雷達探測教程

    本文主要介紹如何使用Qt開發雷達探測程序,並展示一個簡單的雷達探測示例。 一、環境準備 在開始本教程之前,需要確保你的開發環境已經安裝Qt和Qt Creator。如果沒有安裝,可以…

    編程 2025-04-29
  • 猿編程python免費全套教程400集

    想要學習Python編程嗎?猿編程python免費全套教程400集是一個不錯的選擇!下面我們來詳細了解一下這個教程。 一、課程內容 猿編程python免費全套教程400集包含了從P…

    編程 2025-04-29
  • 服務器安裝Python的完整指南

    本文將為您提供服務器安裝Python的完整指南。無論您是一位新手還是經驗豐富的開發者,您都可以通過本文輕鬆地完成Python的安裝過程。以下是本文的具體內容: 一、下載Python…

    編程 2025-04-29

發表回復

登錄後才能評論