--- title: "HTTP 主机地址绑定配置" date: 2026-01-10 lastmod: 2026-01-10 description: "控制 HTTP 服务绑定的主机地址配置说明" tags: ["HTTP", "网络绑定", "主机地址"] summary: "配置项作用 # http.host 配置项指定 HTTP 服务绑定的网络主机地址,决定 Easysearch 在哪些网络接口上监听 HTTP 连接。 是否可选 # 是 默认值 # [] (空列表,会使用 network.host 的值) 配置项类型 # 静态配置 - 需要重启节点才能生效 配置格式 # # 绑定到所有接口 http.host: - 0.0.0.0 # 绑定到特定 IP 地址 http.host: - 192.168.1.10 # 绑定到多个 IP 地址 http.host: - 192.168.1.10 - 10.0.0.5 # 绑定到本地回环地址 http.host: - _local_ # 绑定到站点本地地址 http.host: - _site_ 工作原理 # HTTP 服务器绑定到配置的主机地址: ┌─────────────────────────────────────────────────────────┐ │ 节点启动 │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌───────┴────────┐ │ 读取配置 │ http." --- ## 配置项作用 `http.host` 配置项指定 HTTP 服务绑定的网络主机地址,决定 Easysearch 在哪些网络接口上监听 HTTP 连接。 ## 是否可选 是 ## 默认值 ``` [] (空列表,会使用 network.host 的值) ``` ## 配置项类型 **静态配置** - 需要重启节点才能生效 ## 配置格式 ```yaml # 绑定到所有接口 http.host: - 0.0.0.0 # 绑定到特定 IP 地址 http.host: - 192.168.1.10 # 绑定到多个 IP 地址 http.host: - 192.168.1.10 - 10.0.0.5 # 绑定到本地回环地址 http.host: - _local_ # 绑定到站点本地地址 http.host: - _site_ ``` ## 工作原理 HTTP 服务器绑定到配置的主机地址: ``` ┌─────────────────────────────────────────────────────────┐ │ 节点启动 │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌───────┴────────┐ │ 读取配置 │ http.host 配置 │ ▼ ┌───────┴────────┐ │ │ 指定地址? 未指定 │ │ ▼ ▼ 绑定指定地址 使用 network.host │ │ ▼ ▼ ┌─────┴─────────────────────┴─────┐ │ │ 解析地址 绑定到网络接口 │ │ ▼ ▼ HTTP 服务启动 ``` ## 优先级顺序 ``` http.bind_host (最高优先级) │ ├── 未设置 → http.host │ │ │ ├── 未设置 → network.bind_host │ │ │ │ │ └── 未设置 → network.host │ │ ▼ ▼ 最终绑定的地址 ←─────┘ ``` ## 推荐设置 | 环境 | 推荐配置 | 说明 | |------|---------|------| | 开发环境 | `["127.0.0.1"]` 或 `["_local_"]` | 只允许本地访问 | | 生产环境 | 具体内网 IP | 绑定到内网 IP | | 多网卡服务器 | 所有需要的 IP | 明确指定每个 IP | | 容器环境 | `["0.0.0.0"]` | 绑定所有接口 | ## 使用示例 **开发环境配置:** ```yaml # 只允许本地访问 http.host: - 127.0.0.1 # 或使用本地标识符 http.host: - _local_ ``` **生产环境配置:** ```yaml # 绑定到内网 IP http.host: - 192.168.1.10 # 多网卡服务器 http.host: - 192.168.1.10 - 10.0.0.5 ``` **容器环境配置:** ```yaml # 绑定所有接口(容器内) http.host: - 0.0.0.0 ``` ## 配置验证 ```bash # 查看当前配置 GET /_nodes/settings?filter_path=nodes.*.http.host # 查看实际绑定的地址 GET /_nodes # 测试连接 curl http://192.168.1.10:9200 ``` ## 安全建议 **生产环境最佳实践:** 1. **避免绑定所有接口** ```yaml # 不推荐 http.host: - 0.0.0.0 # 推荐 - 绑定到具体 IP http.host: - 192.168.1.10 ``` 2. **使用内网 IP** ```yaml http.host: - 10.0.0.10 ``` 3. **配合防火墙** ```bash # 限制访问来源 firewall-cmd --permanent --add-rich-rule=' rule family="ipv4" source address="10.0.0.0/8" port protocol="tcp" port="9200" accept ' ``` ## 常见问题 **问题 1:无法从远程访问** **症状:** - 本地可以访问 - 远程无法连接 **可能原因:** 1. 绑定到了 127.0.0.1 2. 防火墙阻止了连接 3. 绑定的 IP 不在正确的网卡上 **解决方案:** ```yaml # 确保绑定到正确的网络接口 http.host: - 192.168.1.10 # 检查网络接口 ip addr show # 检查防火墙 firewall-cmd --list-all ``` **问题 2:多网卡绑定错误** **症状:** - 服务只在一个网卡上监听 **解决方案:** ```yaml # 明确指定所有需要监听的 IP http.host: - 192.168.1.10 - 10.0.0.5 ``` ## 相关配置项 | 配置项 | 默认值 | 说明 | |-------|-------|------| | `http.bind_host` | 同 http.host | 实际绑定的地址 | | `http.publish_host` | 同 http.host | 对外发布的地址 | | `network.host` | - | 全局网络绑定地址 | | `http.port` | 9200-9300 | HTTP 服务端口 | ## 注意事项 1. **静态配置**:修改绑定地址需要重启节点 2. **安全考虑**:生产环境应绑定到具体 IP,避免使用 0.0.0.0 3. **优先级**:http.bind_host 优先级高于 http.host 4. **地址解析**:主机名会在启动时解析为 IP 地址 5. **回环地址**:开发环境可以使用 _local_ 只允许本地访问