- 中转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)】结构契合特别,感谢其文章提供的思路与方法。