Introduction
shadowsocks-libev
配合privoxy
实现的http代理,仅暴露出要使用的http端口给宿主机及内网中的其他设备使用,如:container1使用专线代理,container2使用免费代理
配合nginx
可以实现负载均衡(推荐使用nginx-alpine
镜像,官方已集成四层转发需要的stream相关模块)
Usage
1 | docker run -d --name cnix_free_lb --restart=always -p 8119:8118 -v "/etc/shadowsocks-libev/free_lb.json:/etc/shadowsocks-libev/config.json" qwinwin/ss_privoxy |
其中:-p 8119:8118
将容器中privoxy的8118
默认端口映射到宿主机的8119
端口(8119
可自定义)
再将自己的shadowsocks配置文件挂载到容器中即可,如此便可方便地用不同端口区分不同的节点线路
本人使用场景:
有一台7*24小时运行的x86小主机,给本机及内网中的其他设备提供服务
8118
:日常使用,转发专线节点,快速稳定但流量贵8119
:大文件传输使用,速度较慢,但节点不计流量相当于免费
以8119
端口为例,因为节点偶尔会失联,又不想手动去改,所以用nginx
做了负载均衡
free_lb.json
中的server地址172.17.0.1
为docker分配的宿主机ip,一般都是这个,可以通过ip a
命令查看docker0
网卡的ip地址进行确认,50281
为nginx
监听的节点。当然,如果不用nginx
做负载均衡,直接按你的节点配置来即可1
2
3
4
5
6
7
8
9
10
11
12
13
14
15$ cat /etc/shadowsocks-libev/free_lb.json
{
"server":"172.17.0.1",
"server_port":50281,
"local_address":"0.0.0.0",
"local_port":1080,
"timeout": 300,
"workers": 1,
"password": "pwd",
"method": "rc4-md5",
"fast_open": true,
"no_delay": true,
"mode": "tcp_and_udp",
"plugin": ""
}ss_free.conf
是nginx tcp转发的配置文件,监听本地50281
,接收来自shadowsocks
的请求并通过upstream
模块返回可用节点,如此负载均衡、故障转移的需求得以实现1
2
3
4
5
6
7
8
9
10
11$ cat /etc/nginx/stream.conf.d/ss_free.conf
upstream free {
server 1.free.xyz:5555;
server 2.free.xyz:5555;
server 3.free.xyz:5555;
}
server {
listen 50281;
proxy_pass free;
proxy_next_upstream_timeout 1s;
}Related Links
DockerHub
GitHub