在以太坊的生态系统中,RPC(Remote Procedure Call,远程过程调用)节点是连接用户、DApp与区块链底层的桥梁,无论是为了提高去中心化应用的可靠性,还是为了在私有网络中进行开发测试,掌握如何为以太坊节点增加和配置新的RPC服务都是一项至关重要的技能。
本文将以目前最主流的以太坊执行层客户端 Geth 为例,详细介绍如何通过命令行参数和配置文件两种方式来“增加”或“开启”RPC服务。
在默认情况下,为了保证安全,Geth 节点通常只开启 IPC(进程间通信),而不对外开放 RPC 接口,所谓的“增加新的RPC服务”,本质上是在启动节点时,显式地告诉客户端:监听哪个端口、允许哪些模块、以及接受来自哪里的请求。
这里有一个核心概念需要理解:--http.addr。

localhost (127.0.0.1),这意味着只有本机可以访问。0.0.0(监听所有网络接口)或特定的服务器 IP。这是最直接的方法,在启动 Geth 时,你可以通过添加特定的标志来开启和配置 HTTP RPC 服务。

基础启动命令:
geth --http --http.addr "0.0.0.0" --http.port 8545 --http.api "eth,net,web3,txpool" --http.corsdomain "*"
参数详解:
--http:这是总开关,启用 HTTP-RPC 服务,在旧版本的 Geth 中,这个参数曾是 --rpc。--http.addr "0.0.0.0":指定 RPC 监听地址,设置为 0.0.0 意味着节点将接受来自任何 IP 的连接请求(请务必配置防火墙)。--http.port 8545:指定 RPC 监听端口,默认是 8545,你可以修改为任何未被占用的端口(8546 通常用于 WebSocket)。--http.api "eth,net,web3,...":这是“增加”服务功能的关键,通过这个参数,你可以决定开放哪些 API 模块。
eth (核心以太坊功能), net (网络信息), web3 (工具库), txpool (交易池状态), personal (账户管理,私链常用)。如果你不想每次启动都输入一长串命令,或者你需要管理复杂的配置,使用 TOML 配置文件是更好的选择。

config.toml):[Node.HTTP] Enabled = true Host = "0.0.0.0" Port = 8545 API = ["eth", "net", "web3", "txpool"] CORS = ["*"]
geth --config /path/to/config.toml
除了 HTTP,现代 DApp 开发经常需要实时推送数据(如监听新区块),这时需要增加 WebSocket RPC 服务,这与 HTTP RPC 是并行独立的。
启动命令示例:
geth --ws --ws.addr "0.0.0.0" --ws.port 8546 --ws.api "eth,net,web3" --ws.origins "*"
--ws:开启 WebSocket 服务。当你执行了上述步骤,将 RPC 服务暴露在公网(0.0.0)后,你的节点就面临着被扫描和攻击的风险,特别是“盗币”攻击。
必须遵守的安全原则:
--unlock 参数解锁账户私钥,攻击者可以通过 RPC 接口调用 eth_sendTransaction 将资金转走。personal 或 admin 模块。配置完成后,你可以使用 curl 命令在终端中快速测试 RPC 服务是否正常工作:
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' http://你的服务器IP:8545
如果返回类似 {"jsonrpc":"2.0","id":1,"result":"0x1234..."} 的结果,说明新的 RPC 服务已成功增加并运行。