- 中转vps一台:5.5.5.5
- 落地vps一台:6.6.6.6
- 已经建设好网站配置好证书
- CF网站配置:
- 已托管好域名:emengweb.com
- 已经将SSL/TLS 加密模式为 完全
- 已经点开小云朵
已经设置好解析:emengweb.com 到6.6.6.6
开始配置
中转VPS配置
1. 环境搭建
安装docker,安装docker-compose
apt install docker-compose # 如果无法安装,可以使用一键脚本 #bash <(curl -sL install.emengweb.com/docker.sh) #或使用官方脚本手动安装 #curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose && ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
2. Linux优选IP
2.1 下载优选程序
# 创建新文件夹 mkdir CloudflareST # 进入文件夹 cd CloudflareST # 下载 CloudflareST 压缩包 wget -N https://github.com/XIU2/CloudflareSpeedTest/releases/download/v2.0.2/CloudflareST_linux_amd64.tar.gz # 解压 tar -zxf CloudflareST_linux_amd64.tar.gz
2.2 执行程序开始优选
# 赋予执行权限 chmod +x CloudflareST # 运行 ./CloudflareST
更多使用方法,见作者github:CloudflareSpeedTest
2.3 复制筛选的IP到文本文件,备用
3. 用gost搭配优选cfIP实现转发的负载均衡
3.1 docker-compose文件配置
root根目录下,新建gost目录,并在gost目录下新建并编辑docker-compose.yml文件:
mkdir gost cd gost nano docker-compose.yml
docker-compose.yml 文件内容
version: "3" services: relay: image: ginuerzh/gost restart: always network_mode: "host" volumes: - ./conf:/home command: - "-C=/home/gost.json" logging: options: max-size: "10m" max-file: "3"
3.2 优选IP文件的配置
gost目录下新建配置文件目录conf,新建并编辑cfip2022配置文件
mkdir conf cd conf nano cfip2022
填入上2.3中的优选IP,并加上服务端口,一个IP一行
198.41.194.108:443 104.19.37.120:443 104.18.243.182:443
3.3 gost.json配置文件
同时在conf目录下新建并编辑gost.json配置文件
nano gost.json
gost.json配置文件内容
{ "Debug": true, "Retries": 0, "ServeNodes": [ "tcp://:16888/?ip=/home/cfip2022&host=name.com" ] } // 本地监听端口:16888,如果前端使用nginx反代,建议使用127.0.0.1:16888只开放给本机访问 // 优选IP的列表:cfip2022 // 落地vps的域名:name.com
3.3 启动docker完成配置
回到docker-compose.yml目录,后台启动docker服务,完成配置
cd .. docker-compose up -d
本地客户端可用中转VPS的ip和监听端口访问落地VPS的服务
root@debian:~# ls -R gost/ gost/: conf docker-compose.yml gost/conf: cfip2022 gost.json
PS. 后续将提供docker-compose的一键脚本
4. 使用Nginx进行反代
使用nginx对端口16888进行反代,相较于直接访问gosh转发端口的优点:web源站可以正确获取客户端IP、可部署自定义证书、可动态增加nginx安全防护及数据统计
反代https协议,需要指定proxy_set_header Host为需要反代的域名、并增加额外的SSL相关设定:proxy_ssl_name、proxy_ssl_server_name on,这是参照宝塔反代增加https协议设置后的配置文件,供参考:
#PROXY-START/ location ~* \.(gif|png|jpg|css|js|woff|woff2)$ { proxy_pass https://127.0.0.1:16888; proxy_ssl_name emengweb.com; proxy_ssl_server_name on; proxy_set_header Host emengweb.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; expires 12h; } location / { proxy_pass https://127.0.0.1:16888; proxy_ssl_name emengweb.com; proxy_ssl_server_name on; proxy_set_header Host emengweb.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; add_header X-Cache $upstream_cache_status; #Set Nginx Cache add_header Cache-Control no-cache; } #PROXY-END/
经Nginx反代成功后,可以保证http协议及客户端ip相关数据正确获取,gost加速应该会有数据长连结、复用等功能,相比nginx直接反代转发cf流量要更高效稳定,并且gost自选了最佳ip,增加了多ip的均衡负载,提供了更高的稳定性。以上皆为理论上的推论,实际使用场景下会有多大的提升尚待验证,需要一个长期的数据比对过程。
本文内容部分参照@iSir的相关文章,正好与我的今天构思的【源站 > CF > 前端(Gost > Nginx)】结构契合特别,感谢其文章提供的思路与方法。