为了实现目标,你需要准备:
一台 VPS(云服务器)。内存建议至少 1GB,地区香港新加坡最佳, 日本韩国次之,如果线路好的话欧美地区也不是不可以
一个域名,如果想要和教程完全一致,可以修改域名的 Nameserver 为 Cloudflare,不修改也没关系
一些基础的 Linux 服务器知识,你至少需要懂得如何使用 SSH 工具连接服务器(SSH 工具可以使用简单易用的 FinalShell)
安装 3x-ui 控制面板
3x-ui 是一个由社区积极维护和更新的多协议网络代理面板,可以看作是已停止维护的 x-ui 的升级版,它不仅继承了 x-ui 易于使用和支持多种代理协议的优点,还在安全性、功能性和社区支持方面进行了显著的增强,是搭建和管理个人或多用户代理服务器的更可靠和推荐的选择。
使用一键脚本进行安装:
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)推荐:通过Docker安装
克隆仓库:
git clone https://github.com/MHSanaei/3x-ui.git
cd 3x-ui运行服务:
docker compose up -d或者
docker run -itd \
-e XRAY_VMESS_AEAD_FORCED=false \
-v $PWD/db/:/etc/x-ui/ \
-v $PWD/cert/:/root/cert/ \
--network=host \
--restart=unless-stopped \
--name 3x-ui \
ghcr.io/mhsanaei/3x-ui:latest配置 3x-ui
在浏览器地址栏中输入 服务器IP:2053 进入 3x-ui 面板。默认账号密码为:admin/admin,登入 3x-ui 面板。面板界面如下:

第一次进入建议修改用户名和密码

Nginx反代实现 3x-ui 面板和网站共存
更改3X-ui管理后缀

注意更改根路径后需要重启面板
Nginx设置
我使用的是1Panel面板,在网站-->网站 中进行反代设置

点击列表中的文件夹小图标打开网站目录,选择 proxy 文件夹,打开 root.conf 文件

在root.conf中填入以下内容:
location ^~ /X-UI/ {
proxy_pass http://127.0.0.1:2053/X-UI/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location / {
proxy_pass https://repo1.maven.org/; #伪装网址
proxy_redirect off;
proxy_ssl_server_name on;
sub_filter_once off;
sub_filter "repo1.maven.org" $server_name;
proxy_set_header Host "repo1.maven.org";
proxy_set_header Referer $http_referer;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header User-Agent $http_user_agent;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Accept-Encoding "";
proxy_set_header Accept-Language "zh-CN";
}
注意端口和路径要与3X-UI的设置一致
/X-ui前面需要加^~设置为正则匹配,要不会和默认的js缓存规则冲突导致X-UI后台js文件全部404,后台一片空白。
设置完毕以后,在1Panel面板里面重载配置,然后重新启动 Nginx,配置生效。至此,你可以使用 https://ip/X-UI/ 来访问你的 Xray 管理面板了后续注意:这样设置会使X-ui后台的二维码和分享链接无法直接使用,导入后必须手动服务器地址为你的域名或者IP,更改端口为443,开启TLS并填入你的域名及path。后续可以通过IP:54321/path 或 https://域名/path 访问X-ui后台,建议可以把54321端口用防火墙封禁掉只通过域名HTTPS访问,

使用 3x-ui 搭建节点
在3X-UI左侧选择 入站列表,选择 添加入站(其实就是新建节点的意思)。各设置项按如下设置:
备注即为节点名。
协议改为
vmess监听修改为
127.0.0.1或者localhost端口号随便设置为
22161,后面会用传输设置为
WebScoket复制「客户」中随机生成的「电子邮件」,并复制到「小路」中,前面不要忘了加上斜杠。记住这个生成的路径,后面会用到
其余项均设置为默认即可
各设置项如下图所示:

使用反向代理隐藏节点
点击列表中的文件夹小图标打开网站目录,选择 proxy 文件夹,打开 root.conf 文件,填入以下内容:
location /awaekmzc { #分流路径
proxy_redirect off;
proxy_pass http://localhost:22161; #入站端口
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}对以上配置文件的解释:
分流路径需要修改为刚刚创建节点时填写的
小路,也就是说只有该路径下的请求会被分流到我们搭建的节点上平时在浏览器中输入
free.你购买的域名.域名后缀,会跳转到一个伪装站点上。这个伪装站点是 Maven 的中央仓库,满足大流量的特征。你也可以填写其他的网站,只要满足大流量的特征即可。
连接节点
打开 3x-ui 的面板,导出创建好的节点的链接,如下图:

在小火箭中,端口号填写 443,加密方式建议选择 zero,效率更高(因为加密的工作已经在传输层由 TLS 帮我们完成了,就不需要二次加密了),传输层安全选择 TLS,其余默认。

补充说明
节点搭建完成后,如果有防火墙的话建议关闭 3x-ui 面板的端口,避免被爆破攻击,可以只保留
80443和服务器的 SSH 登录端口可以使用订阅转换工具,生成适用于包括 Clash、Shadowrocket 在内的,各种客户端的订阅链接
如果机器的内存太小(例如低于 512M),由于 1Panel 会占用大概两三百 MB 的内存,所以此时我不建议安装 1Panel 面板,建议按照不良林的视频,只安装 Nginx 和 x-ui 面板,并用 acme.sh 申请证书
相比同样使用伪装站点的 Trojan 协议,为什么这种搭建方式还要更稳定一些?因为我们选择的 WebServer 是 Nginx,而不是 Trojan 的内置 WebServer。Nginx 是市场份额第一的 WebServer,因此我们搭建的节点对于墙来说特征更小,更像一个正常的资源网站。
Update: 如何为节点套上 CDN?
CDN 全称为 Content Delivery Network,也就是「内容分发网络」的意思。简单地讲,其原理相当于在本地网络和服务器之间架设一些中转服务器,静态资源可以缓存在中转服务器上减少源站压力,动态资源也可以经由中转服务器起到加速的作用,我们为节点套 CDN 主要是利用了后者的特性。
由于我们底层使用了 WebSocket 传输协议,所以理论上是可以套 CDN 的。
当然,前提是 CDN 厂商支持 WebSocket 协议,常见的支持 WebSocket 的 CDN 厂商有 Cloudflare(完全免费但是基础订阅线路一般),Amazon Cloudfront(收费,但是每个月好像有 1TB 的免费额度)。
以下以 Cloudflare 为例,Cloudflare 启用 CDN 非常简单且优雅,直接打开 DNS 解析设置页,为解析记录启用「小黄云」就可以了。

浏览器访问设置的伪装域名也一直出现「页面重定向次数过多」的报错。原因如下:

访问HTTP自动跳转到HTTPS与CF上的安全性产生了冲突

解决方案:
将 1Panel 中的 HTTP 选项从「HTTP 跳转到 HTTPS」改为「禁止 HTTP」
或者,将 Cloudflare 中的 SSL/TLS encryption mode 改为更高级的 完全 或者 完全(严格)
当服务器的 IP 被墙,可以套用 CDN 拯救被墙的 IP。
引用 引用