基本配置
nodes 部门
nodes部门定义了节点的名称、IP地址、端口、服务名称等信息。{ "nodes": { "name": "test-node", "ip": "192.168.1.1", "port": "88", "service": "test.service" } }
network 部门
network部门定义了网络的管理IP地址和防火墙规则。{ "network": { "name": " shadowsocks", "admin IP": "192.168.1.1", "firewall": { "ports": [88], "rules": [ { "type": "http", "scheme": "https", "address": "192.168.1.1", "port": "8" } ] } } }
port 部门
- 定义服务端口的名称和端口地址。
{ "port": { "name": "88", "address": "192.168.1.1:88" } }
防火墙设置
firewall 部门
- 定义防火墙规则,包括端口、策略、允许的流量类型等。
{ "firewall": { "rules": [ { "type": "http", "scheme": "https", "address": "192.168.1.1", "port": "8", "allow": true } ] } }
服务配置
service 部门
- 定义服务的名称、服务类型(
v1,v2,v3)以及相关的配置。{ "service": { "name": "test.service", "v1": true, "v2": false, "v3": false, "description": "测试服务", "handler": (http) => { // 定义文件同步、数据同步或内容同步的配置 } } }
协作模式
coordinator 部门
- 定义协调器配置,包括协调器的名称、日志输出等。
{ "coordinator": { "name": "test-coordinator", "log level": "debug", "port": "88" } }
路径配置
- 定义文件同步的路径和文件扩展名。
{ "path": { "file extension": "json", "pattern": "test.json" } }
版本配置
- 定义服务的版本信息。
{ "version": { "v1": true } }
缓存配置
- 定义缓存的参数,如缓存大小、缓存时间等。
{ "cache": { "size": 128 * 124, "expires": 36 } }
异常配置
- 定义在发生异常时的处理逻辑。
{ "error": { "catch": (error) => { console.error("Error:", error) } } }
注意事项
- 路径:确保文件路径正确无误。
- 版本:按照 ShadowsocksR 的文档选择合适的版本。
- 缓存:缓存大小和时间应根据具体需求调整。
- 异常:在遇到异常时,应先尝试使用默认的异常处理策略,再调整配置。
示例配置
以下是一个完整的ShadowsocksR节点配置示例:
{
"nodes": {
"name": "test-node",
"ip": "192.168.1.1",
"port": "88",
"service": {
"v1": true,
"v2": false,
"v3": false,
"description": "测试服务"
}
},
"network": {
"name": "shadowsocks",
"admin IP": "192.168.1.1",
"firewall": {
"rules": [
{
"type": "http",
"scheme": "https",
"address": "192.168.1.1",
"port": "8"
}
]
}
},
"port": {
"name": "88",
"address": "192.168.1.1:88"
},
"coordinator": {
"name": "test-coordinator",
"log level": "debug"
},
"service": {
"handler": (http) => {
// 配置文件
const config = loadHandler(' ShadowsocksRConfig.json ');
return {
handler: (http) => {
// 文件同步
const files = getFiles();
const filesSync = files.filter(file => file.name.endsWith('json'));
const paths = filesSync.forEach(file => ({
path: file.path,
files: file.files
}));
return paths
}
}
}
},
"path": {
"file extension": "json",
"pattern": "test.json"
},
"cache": {
"size": 128 * 124,
"expires": 36
},
"error": {
"catch": (error) => {
console.error("Error:", error);
throw new Error("Error occurred in Node.js container")
}
}
}



