Xray VLESS-Vision-REALITY 反向代理示例:远程端口映射,将公网入口端口映射到内网 Web 服务

发布于 2026-05-22 10:30 2430 字 13 min read

服务器自动部署Astro博客指南2026进阶443端口复用实战:Xray VLESS-Vision-REALITY 偷自己 + 反向代理回家指南使用 Cloudflare Workers 搭建安全的 Clash Proxy ProviderXray VLESS-Vision-REALITY 反向代理示例:远程端口映射,将公网入口端口映射到内网 Web 服务从零开始玩转 OpenWrt 2026:进阶网络架构与 Nikki 极速配置指南2026 自建节点实战:Xray VLESS-Vision-REALITY 部署指南AI 角色扮演进阶指南:从 SillyTavern 部署到 Telegram 接入从 WordPress 到 Astro 迁移记录ImmortalWrt固件overlay扩容安装指南基于mihomo内核的OpenWrt插件Nikki推荐yaml配置OpenWrt 插件 Passwall 推荐设置指南Cloudflare简易使用指南WordPress 网站向 Jekyll 静态博客迁移全记录OpenWrt 插件 OpenClash 推荐配置指南OpenWrt插件Passwall开启ipv6推荐配置OpenWrt插件Passwall推荐配置指南OpenWrt桥接后访问光猫方法PVE下快速更新OpenWrt固件方法群晖 Docker 容器版 Emby 添加弹弹 play 弹幕实战群晖 NAS 常用 Docker Compose 项目部署汇总群晖 Docker 开启 IPv6 双栈与 OpenWrt 协同配置指南软路由刷 PVE 并安装 OpenWrt 折腾记录群晖开启 macvlan 网络并通过 compose 命令安装 docker 指定 ip家庭网络布局:玩转 PT 与 Docker macvlan 避坑指南在本地运行 docker 连接 api 更稳定使用 chatGPT 服务网站添加石蒜模拟器OpenWrt建议设置(个人备份)家庭网络布局:群晖 VMM 虚拟机安装 OpenWrt 旁路由实战群晖种草教程——从玩机到佛系(自用备份版)一加3T手机刷机及安卓必备系统优化软件推荐利用 phpMyAdmin 指令将 WordPress 网站快速 HTTPS 化利用 Docker 快速安装 Aria2 + AriaNg 教程给 WordPress、Typecho、Emlog 等博客网站添加鼠标点击文字特效Windows 10 快捷方式小箭头去除与恢复指南自动化备份指南:利用 Dropbox Uploader 实现网站数据与 SQL 数据库同步Linux学习笔记(二)Linux学习笔记(一)建站之旅其四:常用命令与参考资料汇总建站之旅其一:一些想法建站之旅其二:从 VPS 科学上网到自建站的萌芽建站之旅其三:多次尝试与一次挫败
frp 的另一种优雅替代方案,使用 Xray 的 VLESS + Vision + REALITY 反向代理功能,实现公网 VPS 入口端口到内网 Web 服务的安全远程映射,无需公网 IPv4、无需路由器端口转发。

一、 场景说明

入口转发:远程端口映射,把公网入口端口映射到内网 Web 服务。

我们有一台内网服务器(192.168.2.1)上运行着反向代理服务(如 Nginx、Caddy、Lucky),监听 18789 端口,并根据域名分发到不同的内网服务。 这台服务器没有公网 IPv4,但有 IPv6(有没有都无所谓),且不想暴露任何端口。

现在,我们希望在公网 VPS 上开放一个 HTTP 端口(例如 52000),外部用户访问 http://公网IP:52000 时,流量能经过 Xray 的反向隧道,精准送到内网反向代理的 192.168.2.1:18789,再按域名路由到具体的后端服务。

这就是 VLESS 反向代理的「入口转发」用法:公网入口端口 → 反向隧道 → 内网 Web 服务

二、 公网服务器端配置

公网 VPS 需要同时做两件事:

  1. 监听 8443 端口:接收内网设备主动建立的 VLESS + REALITY 反向连接(带 reverse 标记)。
  2. 监听 52000 端口:作为外部用户的 HTTP 入口(tunnel 协议),并把该入口收到的所有 TCP 流量通过反向通道转发给内网设备。

2.1 外网端 Xray 配置

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "listen": "::",
      "port": 8443,
      "protocol": "vless",
      "settings": {
        "clients": [
          {
            "id": "uuid",
            "flow": "xtls-rprx-vision",
            "reverse": {
              "tag": "reverse-out"
            }
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "raw",
        "security": "reality",
        "realitySettings": {
          "target": "优选目标站点:443",
          "serverNames": ["优选目标站点"],
          "privateKey": "你的REALITY私钥",
          "shortIds": ["shortid"]
        }
      }
    },
    {
      "listen": "::",
      "port": 443,
      "protocol": "vless",
      "settings": {
        "clients": [
          {
            "id": "uuid",
            "flow": "xtls-rprx-vision"
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "raw",
        "security": "reality",
        "realitySettings": {
          "target": "优选目标站点域名:443",
          "serverNames": ["优选目标站点域名"],
          "privateKey": "你的REALITY私钥",
          "shortIds": ["shortid"]
        }
      }
    },
    {
      "listen": "::",
      "port": 52000,
      "protocol": "tunnel",
      "tag": "portal",
      "settings": {
        "allowedNetwork": "tcp",
        "followRedirect": false
      }
    }
  ],
  "routing": {
    "rules": [
      {
        "inboundTag": ["portal"],
        "outboundTag": "reverse-out"
      }
    ]
  },
  "outbounds": [
    {
      "protocol": "freedom"
    }
  ]
}

tips

  • 8443 入站中 reverse.tag = "reverse-out" 使得该客户端在服务端表现为一个「出站池」,路由可以直接将流量丢给它。
  • 52000 入站使用 tunnel 协议(旧称 dokodemo-door),它只负责接收 TCP 并原样转发,不做任何协议解析。
  • 443 入站,普通的正向代理,端口需设置为不一样。

三、 内网端配置

内网设备必须主动连接公网服务器的 8443 端口,建立反向隧道。为了方便,我们使用 Docker 来运行 Xray。

3.1 Docker Compose 部署(macvlan 网络)

/volume1/docker/xray_reverse下放置config.json内网配置文件即可~

version: '3.8'

services:
  xray:
    image: teddysun/xray:latest
    container_name: xray_reverse
    restart: always
    environment:
      - TZ=Asia/Shanghai
    # 内网端只作为客户端,无需任何端口映射
    # ports: []
    volumes:
      - /volume1/docker/xray_reverse:/etc/xray   # 挂载配置目录
    networks:
      macvlan_net:
        ipv4_address: 192.168.2.3                # 固定内网 IPv4

networks:
  macvlan_net:
    external: true

碎碎念:macvlan 网络需要提前创建。不在本篇的讨论范畴内,非群晖用户只需要普通设置为 host 即可,群晖因为安全原因,docker 即使设置为 host 也没有 ipv6 网络,故用这种方式来曲线救国,转发到路由器的原因也是因为 macvlan 的 docker 无法访问群晖 host 和 bridge 的 docker……

3.2 内网端 Xray 配置

{
  "routing": {
    "rules": [
      {
        "inboundTag": ["reverse-in"],
        "outboundTag": "reverse-direct"
      }
    ]
  },
  "outbounds": [
    {
      "protocol": "freedom"
    },
    {
      "protocol": "freedom",
      "tag": "reverse-direct",
      "settings": {
        "redirect": "192.168.2.1:18789",
        "finalRules": [
          {
            "action": "allow",
            "network": "tcp",
            "ip": ["192.168.2.1"],
            "port": "18789"
          }
        ]
      }
    },
    {
      "protocol": "vless",
      "settings": {
        "address": "你的公网VPS域名或IP",
        "port": 8443,
        "id": "uuid",
        "encryption": "none",
        "flow": "xtls-rprx-vision",
        "reverse": {
          "tag": "reverse-in",
          "sniffing": {
            "enabled": true,
            "destOverride": ["http", "tls", "quic"]
          }
        }
      },
      "streamSettings": {
        "network": "raw",
        "security": "reality",
        "realitySettings": {
          "serverName": "优选目标站点域名",
          "password": "你的REALITY公钥/密码",
          "shortId": "shortid",
          "fingerprint": "chrome"
        }
      }
    }
  ]
}

tips

  • reverse.tag = "reverse-in" 会在内网端产生一个虚拟的入站,所有从公网服务器送来的请求都会从这个入站进入路由。
  • redirect = "192.168.2.1:18789" 将目标地址改写成内网反向代理的服务地址。
  • finalRules 显式放行 192.168.2.1:18789,否则会被 Freedom 出站的默认安全策略阻止(默认禁止访问私有 IP)。
  • 内网 Xray 不需要任何 inbounds 和端口映射,纯客户端模式运行。

四、 验证与测试

  1. 防火墙注意事项

    • 公网 VPS 必须放行 8443 和 18789 端口:
      ufw allow 8443/tcp
      ufw allow 18789/tcp
    • 云服务商安全组也需放行这两个端口。
  2. 测试公网入口 在内网反向代理(192.168.2.1:18789)上配置一个测试站点,然后在公网访问:http://你的公网IP:18789,若能正确返回内网站点的内容,说明整套转发链路已打通。
    后续增加 SSL 证书并反向代理什么的都可以在内网操作了,方便喵~

五、 让 AI 更可靠地协助你配置 Xray

当你需要让 ChatGPT 或其他 AI 帮助你生成或解释 Xray 配置时,请在对话一开始发送下面这段提示词。它会强制 AI 只基于官方文档回答,避免产生幻觉:

点击查看可复制的提示词

无论你是想让 AI 直接生成配置,还是想咨询具体配置问题,都建议你在对话一开始就先把下面这段话发给 AI:

# 角色

你是一个专门帮助用户编写和理解 Xray-core 配置的助手。

你的任务是基于官方文档,帮助我解释配置项,或生成可使用的 Xray-core 配置文件。

# 唯一依据

请使用以下 Xray-core 官方全量文档作为唯一依据:

https://xtls.github.io/llms-full.txt

在回答任何配置相关问题前,请先打开并阅读该文档中的相关部分。

不要使用你的记忆、经验、社区模板、V2Ray 配置习惯、GitHub issue、博客文章或网上常见写法来判断字段是否存在或是否有效。

# 最重要的规则

不要编造配置字段。

只能使用官方文档中明确提到的字段、取值、默认值、限制条件和配置结构。

如果官方文档没有提到某个字段、取值、默认值、限制条件或组合方式,请直接回答:

“文档未提及,不能确认。”

不要猜测,不要补全,不要为了让配置看起来完整而添加没有文档依据的字段。

# 如果无法访问文档

如果你无法打开或读取官方文档链接,请直接说明:

“我无法访问官方文档链接,因此不能保证不产生幻觉。请手动下载 https://xtls.github.io/llms-full.txt 并上传给我,我会只基于上传文档回答。”

在无法访问官方文档时,不要根据记忆生成 Xray-core 配置,也不要根据记忆解释配置细节。

# 回答流程

回答任何配置相关问题时,请遵循以下流程:

1. 先阅读官方文档中的相关部分。
2. 找出相关的配置对象、字段、取值和限制条件。
3. 只基于文档明确确认的内容回答。
4. 如果某部分文档没有确认,请标记为“文档未提及,不能确认”。

生成配置时,请遵循以下流程:

1. 先确认你准备使用哪些字段。
2. 只用官方文档确认过的字段生成配置。
3. 输出前检查最终配置,删除任何无法由文档确认的字段。
4. 如果我的需求中有文档无法确认的部分,请放到“未确认内容”。

# 输出格式

默认输出 JSONC,也就是允许带 `//` 中文注释的 JSON 风格配置。

注释应该帮助普通用户理解:

- 这个字段做什么;
- 用户是否需要修改;
- 修改时要注意什么。

注释不能引入官方文档没有确认的功能。

如果我明确要求“纯 JSON”,请输出不带注释的合法 JSON。

不要使用 `_comment` 字段写注释,除非官方文档明确说支持这个字段。

# 生成配置时的回答格式

请使用以下格式:

## 文档依据

简要列出本次使用到的官方文档中的配置对象和关键字段。

## 配置文件

```jsonc
{
  // 在这里写配置
}
```

## 关键说明

解释我最需要修改或注意的字段。

## 未确认内容

列出我的需求中官方文档没有确认的部分。

如果没有未确认内容,请写:

“无。”

# 解释配置项时的回答格式

请使用以下格式:

## 结论

直接解释这个字段或配置对象的作用。

## 文档依据

说明它属于哪个官方文档中的配置对象,以及文档明确确认了什么。

## 注意事项

只写官方文档明确提到的限制、默认值、可选值或组合规则。

## 文档未提及

列出我的问题中官方文档没有确认的部分。

六、 结语

Xray 的 VLESS 反向代理是一个非常实用的内网穿透方案。它不需要在路由器上设置端口转发,也不要求内网设备有公网 IP。只要两边都安装并配置好 Xray,就能把公网入口的流量安全带回家。不失为 frp 的另一种优雅的替代方案。

本文的配置已经过实际环境验证,你可以根据自己的内网反向代理地址、域名、REALITY 密钥等稍作修改,即可快速搭建属于你自己的远程端口映射服务。

希望这篇记录能帮到正在折腾反向代理的你。如有疑问,欢迎在评论区交流~

喜欢的话,留下你的评论吧~