NGINX 內網穿透

隨着技術的發展,內網穿透已經越來越成為了一種非常重要的技術,在很多場合下需要訪問內網或者局域網,例如,遠程控制、遠程辦公、家庭IP訪問等等。在這個過程中,NGINX 內網穿透是其中非常重要的一種技術。

一、內網穿透的概念

內網穿透是通過外部網絡與內部網絡之間的安全隧道,將本地服務暴露給公網訪問或通過公網訪問內網資源的一種技術。開發人員通過內網穿透能夠輕易地把本地開發環境或者局域網上的資源對外開放,方便外界進行訪問。

在技術細節上,內網穿透需要解決兩個問題,其一是如何將公網請求轉發到內網,其二是如何解決內網服務的 IP 不具備公網訪問能力。

二、NGINX 內網穿透的實現

從技術實現上,NGINX 的內網穿透主要是通過兩個模塊來進行實現的:

1. upstream 模塊

upstream 模塊可以將後端服務初始化為一個群組,它可以代表多個服務器。這個功能使得NGINX可以將請求自動轉發到可用服務器上。

upstream my_backend {
  server backend1.example.com:8080;
  server backend2.example.com:8080;
  server backend3.example.com:8080;
}

2. stream 模塊

stream 模塊可以通過 TCP、UDP 或者 SSL/TLS 協議來代理連接。當我們需要穿透時,它能夠幫助我們將請求發送到內網指定端口並進行轉發。

stream {
  upstream my_backend {
    hash $remote_addr consistent;
    server backend1.example.com:443;
    server backend2.example.com:443;
  }
  server {
    listen 8443;
    proxy_pass my_backend;
  }
}

三、NGINX 內網穿透的應用實例

1. 將內網服務部署到公網

我們可以通過後端的 upsteam 模塊,將內網服務器的端口綁定到外網的端口上,實現內網服務器訪問公網的能力:

upstream local_backend {
  server 127.0.0.1:8080;
}

server {
  listen 80;
  location / {
    proxy_pass http://local_backend;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Nginx-Proxy true;
  }
}

2. 內網穿透 Websocket 服務

Websocket 是一種前端通信協議,它能夠與服務器進行實時的數據通信。我們可以通過 stream 模塊將 websocket 服務部署到公網,並將 websocket 服務的請求進行轉發。

stream {
  upstream websocket {
    hash $remote_addr consistent;
    server backend:8080;
  }
  
  server {
    listen 443;
    proxy_pass websocket;
  }
}

server {
  listen 8080;
  root /var/www/html;
  index index.html;
}

3. 內網穿透 SSH 服務

SSH 是一種遠程登錄協議,它能夠在不同的設備之間進行加密的遠程登錄。我們可以通過 stream 模塊將內網服務器的 SSH 服務穿透到公網,並進行轉發。

stream {
  upstream ssh {
    hash $remote_addr consistent;
    server backend:22;
  }

  server {
    listen 2222;
    proxy_pass ssh;
  }
}

四、總結

NGINX 的內網穿透技術已經被廣泛應用於不同的場合,可以幫助我們將內網服務器暴露出來,方便外部的訪問。在實現上,upstream 和 stream 模塊都是非常重要的技術點,它們可以幫助我們更加方便地進行 NGINX 內網穿透的實現。

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

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

相關推薦

  • Java如何從Nginx下載文件

    本文將從以下幾個方面詳細介紹如何使用Java從Nginx下載文件。 一、準備工作 在Java中下載文件需要使用到Apache HttpClient庫,這個庫是一個基於Java的HT…

    編程 2025-04-27
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web服務器。nginx是一個高性能的反向代理web服務器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • NGINX權限被拒絕問題

    NGINX是一款常見的Web服務器軟件,但是在使用中常會遇到“permission denied”權限被拒絕的問題。下文將從多個方面介紹本問題和解決方法。 一、系統權限問題 1、檢…

    編程 2025-04-25
  • Docker內網穿透全解析

    一、什麼是Docker內網穿透 Docker是一個優秀的容器化技術,可以將應用程序和服務打包成輕量級的容器進行管理和部署。但是,Docker容器默認只能在內網環境中進行通信,如果需…

    編程 2025-04-25
  • 關閉nginx命令詳解

    一、linux系統中關閉nginx命令 1、使用ps命令找到nginx的進程ID $ ps -ef | grep nginx 2、發送信號給nginx進程結束 $ kill -QU…

    編程 2025-04-25
  • 深入淺出:理解nginx unknown directive

    一、概述 nginx是目前使用非常廣泛的Web服務器之一,它可以運行在Linux、Windows等不同的操作系統平台上,支持高並發、高擴展性等特性。然而,在使用nginx時,有時候…

    編程 2025-04-24
  • nginx指定配置文件詳解

    一、配置文件介紹 nginx的配置文件主要由指令和塊組成,以“;”分號作為結束符號,以“{}”大括號作為塊的開始和結束標誌。 nginx的默認配置文件在安裝目錄下的conf文件夾中…

    編程 2025-04-24
  • 重啟nginx服務的命令詳解

    nginx是一個高性能的Web服務器,可通過重新啟動nginx服務來更新配置文件和釋放資源。本文將從多個方面詳細闡述如何重啟nginx服務,包括命令的使用、參數的說明等。 一、ng…

    編程 2025-04-24
  • Nginx$Host詳解

    一、什麼是Nginx$Host Nginx是一款輕量級的Web服務器,可以作為反向代理服務器、負載均衡服務器等。而Nginx$Host是Nginx中的一個特殊變量,它用於表示當前請…

    編程 2025-04-23
  • Mac Nginx詳細介紹

    一、安裝Nginx 安裝nginx最簡便的方法是使用Homebrew。執行以下命令來安裝Homebrew: /usr/bin/ruby -e “$(curl -fsSL https…

    編程 2025-04-23

發表回復

登錄後才能評論