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/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

发表回复

登录后才能评论