新手小白节点搭建教程,从域名到4K高速ip优选:vless+ws+nginx, reality, vless+grpc+nginx 共用443端口


分类:建站与VPS       作者:Caq98i       发布时间:2023-09-16       更新时间:2024-05-03 阅读量:4168    


本文将介绍如何使用docker在一台VPS上部署vless+ws+nginx,reality,vless+grpc+nginx三合一节点,并共用443端口。文本将通过nginx监听443端口,对流量进行分流,也通过nginx反代ws和grpc协议,由此隐藏服务端的tls指纹特征,同时也可将使用cloud flare进行反代优选,通过合适的ip优选可以流畅的观看4K视频。



准备工作:


vps一台,已安装docker(Linux系统Docker安装教程),有一个域名,并已托管到了cloudflare并做好了域名解析且开启了CDN加速(可以参考:使用namesilo注册域名修改名称服务器Nameservers教程域名与cloudflare CDN加速)。

docker一键安装脚本:

curl -sSL https://get.docker.com/ | sh

 

可能有用:

racknerd $12.98一年VPS(4000 GB流量每月,1Gbps) 更多特价VPS

$36.00一年洛杉矶特惠VPS_联通9929移动cmin2电信CN2GIA

😍全球互联-专线接入

$49.99一年VPS 特惠CN2线路  Vultr促销活动及优惠码汇总——新用户注册送50美金

$169.99一年VPS 高端CN2 GIA线路  了解更多

域名注册 一美元优惠码:c34aq98i  了解更多

 

视频演示教程:

https://youtu.be/ernYIZWOKJ4

 

本教程需要使用本机的443端口、8443端口、80端口(由nginx占用),这些都是建站的常用端口,如果存在端口冲突请自行修改相应的配置文件。另外,请检查防火墙配置,是否放行了443端口与80端口,本教程中搭建的3个节点均使用了VPS的443端口与80端口。除此之外,80端口也用于acme.sh申请证书使用。

Debian系统一般使用的ufw防火墙,部分VPS商家可能只放行了22端口(比如vultr),关于ufw的防火墙,可以参考:

为Debian系统配置ufw防火墙指南(其他系统可能不是使用的ufw防火墙,请自行查找相关资料)

另外,部分VPS商家除了在系统中配置了防火墙,也会在他们的控制面板中配置防火墙(比如腾讯云,阿里云),请修改相应的防火墙规则,放行需要的端口。

关于Nginx容器

从本站下载的项目文件中,nginx容器使用了host网络,会占用了宿主机的443端口、8443端口、80端口。443端口的占用见nginx的主配置文件中配置的stream模块,用于sni分流,会根据sni将数据转发到不同的容器的某个端口,从而实现多协议节点共用443端口。比如对于网站的tls加密访问会分流到本机的8443端口。

对于网站的配置都在 ./nginx/conf.d/ 文件夹中,本站给出的示例中,里边放置了xui.conf 文件,用于配置xui面板的反代以及ws,grpc协议的反代(nginx前置),也设置了将证书签发机构对域名验证的请求转发到acme.sh容器。

对于非纯净的VPS,请自行修改相应的配置防止可能的端口占用冲突。比如:如果宿主机已经有nginx了,可以注释掉本站提供的压缩包中的 docker-compose.yml 文件中关于nginx容器的配置,然后根据 ./nginx/ 中的nginx主配置文件与网站配置文件,自行修改宿主机的nginx配置文件。

 

xui面板配置


本节的主要实现:在服务端部署xui面板,并使用nginx反代xui面板,同时为xui面板申请证书,提供对xui面板的https加密访问。

 

① 下载本站准备的配置文件压缩包:xui-servers.zip;解压后上传到VPS的任意路径

关于服务端配置的压缩包

本站更新了服务端的配置压缩包,可以点击下载:x-ui-servers.zip

本标签提供的压缩包进行了如下更新:

1. 添加了sing-box容器以支持hysteria2协议(使用教程见:hysteria2搭建教程

2. 更新了x-ui面板的docker镜像,新版x-ui面板支持生成wireguard协议的出入站,功能更加强大(UI界面与本文中的截图有较大差异,所以仍然保留了之前版本服务端的配置压缩包的下载地址)跟新后的x-ui面板可以更为方便的添加路由规则与出站,详见:使用新版x-ui面板配置wireguard出站(无需关注x-ui的搭建部分,直接看本文即可);如果使用之前的版本的服务端的配置压缩包添加wireguard出站,可以参考:使用warp搭建解锁奈飞 chatGPT 等的科学上网节点-基于xray-core的wireguard出站协议

 

② 修改 ./nginx/conf.d/xui.conf 的第7行需要修改为你已经准备好的域名

 

③ cd到 docker-compose.yml 文件所在的目录后执行:

docker compose up -d

其他 docker compose 命令:

停止容器:

docker compose down

重启容器:

docker compose restart

重载 docker-compose.yml 文件(重载意味着会删除此文件定义的所有容器并重新创建)

docker compose up --force-recreate -d

重载指定的容器:

docker compose up -d --force-recreate --build --no-deps <SERVICE_NAME>

<SERVICE_NAME>为容器的名称,可以查看 docker-compose.yml 文件获得。

 

④ 使用acme.sh 申请证书:

docker exec acme.sh --issue -d sea.anqi.ml --server letsencrypt --standalone

-d 参数后边接申请证书的域名(请提前做好域名解析)

注意:申请证书前应保证域名已经正确解析,nginx配置文件中已经修改为了解析后的域名且nginx的配置已经生效。由于本教程是先修改好了配置文件再创建容器,所以对nginx配置的修改是生效了的。如果你是先创建了容器,再修改了nginx的配置,那么你就需要重启nginx容器使配置生效。

重启nginx容器的命令为:

docker restart nginx

 

./nginx/cert 为证书目录,使用acme.sh申请到的证书都放在这里。然后修改 ./nginx/conf.d/xui.conf 的第11、12行为证书的路径(在这份配置文件中,路径 /etc/nginx/cert/ 就对应了 ./nginx/cert 路径)。

在nginx配置文件中,使用acme申请到的证书和私钥的路径分别为:(需要将绿色部分的mydomain修改为你自己的域名)

/etc/nginx/cert/mydomain_ecc/fullchain.cer
/etc/nginx/cert/mydomain_ecc/mydomain.key

然后,重载nginx配置:

docker exec nginx nginx -s reload

PS:有时候,由于nginx的BUG,可能执行重载nginx容器的命令后,nginx并没有重载配置文件,可以采用重启nginx容器的方式使配置生效。

 

⑥ 浏览器使用域名即可访问到xui面板,默认用户与密码都为 admin;进入建议即使修改密码。

注意:点击“面板设置”后,xui面板会自动修改买面板访问路径,请记住此路径(当然也可以在面板设置中自定义此路径)。

如果使用默认用户名与密码无法登录xui面板,可以尝试清空项目目录下的x-ui文件夹,然后重新构建xui容器(在 docker-compose.yml 文件所在的目录执行):

docker compose up -d --force-recreate --build --no-deps xui

 

vless+ws+nginx+CDN节点搭建


① 使用xui添加一个vless+ws+nginx节点:

添加一个vless节点:备注随便写,协议选择vless,将传输改为 ws ,路径设置为:/ssvipass<port>,<port>与节点端口保持一致,比如下图路径应该设置为:/ssvipass15695。(注意:本教程使用的nginx前置进行反代,tls由nginx提供,节点不需要开启tls;同时nginx是根据路径决定将流量转发到不同的节点端口的)

 

② 在x-ui面板中,依次点击 操作👉二维码👉复制;然后打开v2rayN软件,使用快捷键 CTRL+V 粘贴节点。双击节点进行修改:将端口改为443;TLS选择tls;别名随便写,用于自己分区不同的节点。fingerprint可以随便选一个用于伪装。

 

PS:没有v2rayN或者没用过v2rayN ? 可以参考这个 v2ray节点使用教程

客户端可以在路径后边加上?ed=2048来减少延迟

保存后,即可对节点进行测试了。如果测试不通可以在“伪装域名”处填写你的域名。这个节点的“地址”是填写的经过cloudflare CDN加速的域名,使用的是cloudflare默认分配的CDN ip,在某些网络环境下体验并不友好,可以自行指定CND的ip地址,参考这两个工具:Cloudflare节点优选工具Cloudflare批量CND科学上网节点生成工具

另外,如果你的VPS线路本身比较好,可以在“地址”处填写你的VPS的公网IP,“伪装域名”填写你搭建梯子的域名,这样就能不经过cloudflare的反向加速,实现直连

(虽然采用了nginx前置来消除服务端的指纹特征,但由于CFW对tls-in-tls特征识别能力的提升,不建议直连此节点!)

 

vless+grpc+nginx节点搭建


使用xui添加一个vless节点:备注随便写,协议选择vless,将传输改为 grpc ,serviceName 设置为:passgrpc<port>,<port>与节点端口保持一致,比如为:passgrpc15695

同样是将节点复制到v2rayN中进行连接,双击节点进行修改:将端口改为443;TLS选择tls;别名随便写,用于自己分区不同的节点。在“地址”处填写你的VPS的公网IP,“伪装域名”填写你搭建梯子的域名(cloudflare默认不支持grpc的CDN,这里就直接采用直连的方式了,虽然可以去cf的控制面板开启)。

▶由于CFW对tls-in-tls特征识别能力的提升,不建议直连此节点!

▷配置cloudflare为grpc节点开启CDN可以参考这个视频教程:https://youtu.be/nlZy7dcNifA

 

reality协议节点搭建


① 添加一个 vless + xtls-rprx-vision + reality 的节点:记住端口号,之后修改nginx主配置文件会用到;至少有一个用户,没有用户就点击下图③处的+号;flow选“xtls-rprx-vision”(选择此项需要将网络选为tcp,同时勾选reality)

 vless+tcp+reality

 

注:reality将使用目标网站的证书进行伪装,可以很好的隐藏服务端特征,配合xtls-rprx-vision流控可以极大的消除tls in tls特征,增强安全性。

关于目标网站的选择,可以参考这个视频:reality节点搭建演示

reality突然不通,可以排查一下是不是目标网站的问题:美西目标域名推荐 · XTLS/Xray-core · Discussion #2256 · GitHub

 

② 修改nginx主配置文件:

./nginx/nginx.conf 为nginx的主配置文件,需要修改的内容为:

第20行:将域名修改为目标网站的域名

第25行:将端口号修改为reality协议节点的端口号(见上图的②)

 

③ 修改完成后保存配置文件,然后重载nginx配置使修改生效:

docker exec nginx nginx -s reload

 

④ 将节点复制到v2rayN中进行连接,双击节点进行修改:将端口改为443;在“地址”处填写你的VPS的公网IP

 

注:本项目所有的nginx日志文件都配置到了 ./nginx/html/ 之中。

2024年最新免费v2ray节点分享(vless节点)

关于reality+grpc

reality可以与grpc搭配,可以获得比vless + xtls-rprx-vision + reality更低的延迟与更快的速度,但由于xtls-rprx-vision不能与grpc搭配,可能存在tls-in-tls的特征,安全性不及这里搭建的vless + xtls-rprx-vision + reality方案。

搭建reality+grpc节点可以参考:使用x-ui面板构建vless+reality节点

如果需要共用443端口,请为 reality+grpc 选择与 vless + xtls-rprx-vision + reality 不一样的目标网站,同时需要修改nginx的主配置文件,根据sni将443端口收到的请求转发到 reality+grpc 节点监听的端口。如果不需要共用443端口,可以修改 docker-compose.yml 文件中的xui容器的配置,添加端口映射后,重构xui容器。

 

关于站点伪装:


可以修改站点的配置文件 ./nginx/conf.d/xui.conf :取消第八、九行的注释,其中第9行为网站的根目录,可以上传任意网站的模板文件到 ./nginx/html/ 目录下,比如可以将网站的模板文件夹(假设文件夹名称为 worldhello ,里边有.html等文件)上传到 ./nginx/html/ 目录,这样第九行应该为:

root /usr/share/nginx/html/worldhello/;

然后将74行的 location / 改为 location /path 。其中path为第⑥步中提到的面板路径。

最后,重载nginx配置即可。

 

◭ 建议开启BBR,这对本文介绍的几种基于TCP的代理协议都是有很高的速度提升的。Debian系统开启bbr拥塞控制算法教程

 

自定义订阅地址


可以借助nginx添加一个自定义的订阅地址,方便在各个客户端分享使用节点。详见:基于nginx构建自己专属的节点订阅链接地址


捐赠通道,感谢!🦀🦀


          support a 🍕


留言与评论







限时特惠促销