By accessing the website and accepting the Cookie Policy, you agree to use the cookies provided by the Site in accordance with to analyze traffic, remember your preferences, and optimize your experience.
docker版Gost套用多CF节点实现负载均衡,通过将流量通过CF转发至源站,加速站点访问速度
反代 Nginx Gost CF    2022-04-23 23:23:13    647    0    0
emengweb   反代 Nginx Gost CF
需要准备的资源:

 

  • 中转vps一台:5.5.5.5
  • 落地vps一台:6.6.6.6
    • 已经建设好网站配置好证书
  • CF网站配置:
    • 已托管好域名:emengweb.com
    • 已经设置好解析:emengweb.com 到6.6.6.6

    • 已经将SSL/TLS 加密模式为 完全
    • 已经点开小云朵

 

开始配置

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

上一篇: 设计师必看的图标设计指南

下一篇: Oracle甲骨文VPS添加IPv6并配置系统自动获取v6地址详细图文教程 (Ubuntu/Debian 11)

647 人读过
文档导航