OpenClaw 配置 Nginx 反向代理完整指南

OpenClaw 配置 Nginx 反向代理完整指南

OpenClaw 配置 Nginx 反向代理完整指南

将 OpenClaw Gateway 安全地暴露到公网,并通过 HTTPS 和登录保护确保访问安全。

前言

OpenClaw 是一个强大的 AI 助手网关,默认情况下它只监听本地回环地址 (127.0.0.1:18789)。如果你想从外部网络访问 Control UI,或者为团队提供安全的访问入口,配置 Nginx 反向代理是最佳实践。

本文将介绍如何:

  • ✅ 配置 Nginx 反向代理到 OpenClaw
  • ✅ 启用 HTTPS (Let’s Encrypt SSL 证书)
  • ✅ 添加 Basic Auth 登录保护
  • ✅ 配置 OpenClaw 信任代理模式

环境准备

  • 服务器: CentOS Stream 9 / Ubuntu 20.04+ / Debian 10+
  • 域名: 已解析到服务器 IP(本文以 www.zhonghongwei.site 为例)
  • OpenClaw: 已安装并运行在本地模式
  • 端口: 80/443 未被占用

步骤一:安装 Nginx 和 Certbot

# CentOS/RHELsudo dnf install-y nginx certbot python3-certbot-nginx # Ubuntu/Debiansudoapt update sudoaptinstall-y nginx certbot python3-certbot-nginx # 启动 Nginxsudo systemctl start nginx sudo systemctl enable nginx 

步骤二:配置 OpenClaw 信任代理模式

编辑 ~/.openclaw/openclaw.json,在 gateway 部分添加以下配置:

{"gateway":{"port":18789,"mode":"local","bind":"loopback","trustedProxies":["127.0.0.1"],"auth":{"mode":"trusted-proxy","trustedProxy":{"userHeader":"x-forwarded-user","requiredHeaders":["x-forwarded-proto","x-forwarded-host"]}},"controlUi":{"allowedOrigins":["https://www.zhonghongwei.site"]}}}

关键参数说明

参数说明
bind: "loopback"只监听本地地址,禁止外部直接访问
trustedProxies信任的代理服务器 IP,此处为 Nginx
mode: "trusted-proxy"启用信任代理认证模式
userHeaderNginx 传递用户身份的 Header
allowedOrigins允许的 Control UI 来源域名

重启 OpenClaw Gateway:

openclaw gateway restart 

步骤三:配置 Nginx 反向代理

创建 /etc/nginx/conf.d/openclaw.conf

# OpenClaw Nginx 配置 # HTTP 重定向到 HTTPS server { listen 80; server_name www.zhonghongwei.site; return 301 https://$host$request_uri; } # HTTPS 服务 server { listen 443 ssl http2; server_name www.zhonghongwei.site; # SSL 证书路径(步骤四会自动配置) ssl_certificate /etc/letsencrypt/live/www.zhonghongwei.site/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.zhonghongwei.site/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # 安全响应头 add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Content-Type-Options "nosniff" always; add_header X-XSS-Protection "1; mode=block" always; # 日志配置 access_log /var/log/nginx/openclaw-access.log; error_log /var/log/nginx/openclaw-error.log; location / { # WebSocket 支持(必需) proxy_pass http://127.0.0.1:18789; # 核心:这里清空认证头防止冲突 proxy_set_header Authorization ""; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # 转发用户身份(信任代理模式必需) proxy_set_header X-Forwarded-User $remote_user; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; # 超时设置(WebSocket 长连接) proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 86400s; proxy_buffering off; } } 

测试并重载配置:

nginx -t nginx -s reload 

步骤四:申请 SSL 证书

使用 Let’s Encrypt 免费证书:

# 申请证书sudo certbot --nginx-d www.zhonghongwei.site # 测试自动续期sudo certbot renew --dry-run 

Certbot 会自动:

  • 生成 SSL 证书
  • 修改 Nginx 配置添加证书路径
  • 设置自动续期任务

步骤五:添加登录保护(可选但强烈建议)

为了防止未授权访问,建议添加 Basic Auth 登录。

1. 创建密码文件

# 创建账号密码(用户名: admin)sudosh-c'echo "admin:$(openssl passwd -apr1 你的密码)" > /etc/nginx/.htpasswd'# 添加更多用户sudosh-c'echo "用户名:$(openssl passwd -apr1 密码)" >> /etc/nginx/.htpasswd'

2. 启用 Basic Auth

在 Nginx 配置中添加两行:

server { listen 443 ssl http2; server_name www.zhonghongwei.site; # 添加登录保护 auth_basic "OpenClaw Login"; auth_basic_user_file /etc/nginx/.htpasswd; location / { # ... 原有配置 } } 

重载 Nginx:

sudo nginx -t&&sudo systemctl reload nginx 

验证部署

访问 https://www.zhonghongwei.site,你应该看到:

  1. 🔒 浏览器显示安全锁(SSL 生效)
  2. 📝 弹出登录框(Basic Auth)
  3. 🤖 登录后进入 OpenClaw Control UI

常见问题

1. “origin not allowed” 错误

原因: allowedOrigins 配置不匹配
解决: 在 openclaw.json 中添加你的访问地址:

"allowedOrigins":["https://www.zhonghongwei.site"]

2. WebSocket 连接失败 (1008 unauthorized)

原因: 缺少必要的转发 Headers
解决: 确保 Nginx 配置中包含:

proxy_set_header X-Forwarded-User $remote_user; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; 

3. 证书续期失败

检查:

sudo certbot certificates sudo certbot renew --dry-run 

手动续期:

sudo certbot renew sudo systemctl reload nginx 

安全建议

  1. 定期更换密码: 建议每 3-6 个月更换一次 Basic Auth 密码
  2. 限制访问来源: 如需更高安全性,可在 Nginx 中添加 IP 白名单

访问日志监控: 定期检查异常访问

sudotail-f /var/log/nginx/openclaw-access.log 

防火墙设置: 只开放 80/443 端口,禁止外部访问 18789

sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload

总结

通过本文的配置,你已经完成了:

  • ✅ OpenClaw 信任代理模式配置
  • ✅ Nginx 反向代理 + HTTPS
  • ✅ Let’s Encrypt SSL 证书
  • ✅ Basic Auth 登录保护

现在你可以安全地从任何地方访问你的 OpenClaw Control UI 了!


相关链接:

配置文件备份:

  • ~/.openclaw/openclaw.json
  • /etc/nginx/conf.d/openclaw.conf
  • /etc/nginx/.htpasswd

小技巧:直接把这个博客内容发给openclaw,让它帮你配置。

Read more

金仓数据库 MongoDB 兼容:多模融合下的架构之道与实战体验

金仓数据库 MongoDB 兼容:多模融合下的架构之道与实战体验

引言:从“平替”到“超越”的技术跨越 在国产化替代(信创)浪潮下,选择数据库不再只是考量“能否使用”,更多关注其“好用与否”,还要看是否能做到“无缝切换”。提到 MongoDB,想必大家都不生疏,作为 NoSQL 领域的佼佼者,凭借自身灵活的数据架构和飞快的读写效率,斩获诸多互联网及物联网项目,不过须要诚实地表明,一旦关乎到企业核心业务,譬如要确保数据完全一致,执行繁杂的关联查询或者实施统一运作管理时,MongoDB 就常常会有些力不从心。 电科金仓(Kingbase)所给出的多模融合数据库方案颇具趣味,该方案并非仅仅创建一层适配层来博取眼球,其实在架构层面上执行了“降维打击”,经由内核级别的 MongoDB 协议适配 并结合自主研发的 OSON 存储引擎,金仓把“关系型数据库稳定的基础”与“NoSQL 灵活的特性”融合起来,现在,让我们一起探究金仓数据库(KingbaseES,

By Ne0inhk
Tomcat下载安装以及配置(详细教程)

Tomcat下载安装以及配置(详细教程)

本文讲的是Java环境 文章目录 * 前言 * 下载及安装Tomcat * 启动Tomcat * 测试Tomcat * 配置Tomcat 环境变量 * IDEA中配置Tomcat * Eclipse中配置Tomcat 前言 提示:这里可以添加本文要记录的大概内容: 今天晚上查看自己原来项目的时候,突然发现运行不了,仔细查看发现是tomcat没配置,但是tomcat在电脑里已经下载过了,只是还没有配置,这篇文章就讲tomcat在电脑与idea中的配置 提示:以下是本篇文章正文内容,下面案例可供参考 下载及安装Tomcat 进入tomcat官网,Tomcat官网 选择需要下载的版本,点击下载 下载路径一定要记住,并且路径中尽量不要有中文 下载后是压缩包 .zip,解压后 tomcat系统各个文件夹目录是什么意义: bin:放置的是Tomcat一些相关的命令,启动的命令(startup)和关闭的命令(shutdown)等等 conf:(configure)配置文件 lib:(library)库,依赖的 jar包 logs:Tomca

By Ne0inhk
【MySQL】win 10 / win11:mysql 5.7 下载、安装与配置

【MySQL】win 10 / win11:mysql 5.7 下载、安装与配置

目录 一、MySQL 下载 (1)MySQL 官网下载地址 (2)下载保存安装包 二、MySQL 安装 (1)运行安装包 (2)选择安装类型 (3)选择安装版本号 (4)配置服务端口 (5)配置 root 的密码 (6)配置服务名称 (7)安装完成 三、配置系统环境变量 (1)打开系统环境变量配置面板 (2)编辑系统变量 Path 四、验证安装完成 五、Navicat 测试连接 (1)连接数据库 (2)填写连接信息 (3)测试连接 (4)保存连接 (5)高级配置(

By Ne0inhk
Flutter 组件 reaxdb_dart 适配鸿蒙 HarmonyOS 实战:响应式 NoSQL 数据库,构建高性能本地持久化与分布式状态同步架构

Flutter 组件 reaxdb_dart 适配鸿蒙 HarmonyOS 实战:响应式 NoSQL 数据库,构建高性能本地持久化与分布式状态同步架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 reaxdb_dart 适配鸿蒙 HarmonyOS 实战:响应式 NoSQL 数据库,构建高性能本地持久化与分布式状态同步架构 前言 在鸿蒙(OpenHarmony)生态迈向全场景协同、涉及极高频率的端侧数据持久化、实时 UI 数据绑定及分布式节点状态同步的背景下,如何实现一套既能保障数据“强一致性”、又能提供毫秒级检索性能且具备天然“响应式(Reactive)”特性的本地存储引擎,已成为决定应用交互流畅度与底层架构灵活性。在鸿蒙设备这类强调 AOT 极致效能与沙箱存储严格隔离的环境下,如果应用依然依赖臃肿的传统 SQL 或非响应式的 Key-Value,由于由于由于由于 UI 与数据库间的频繁轮询,极易由于由于“数据 IO 阻塞”导致鸿蒙应用在高并发读写时发生明显的帧率抖动。 我们需要一种能够解耦存储逻辑、支持 Stream 级变更监听且具备高性能二进制序列化架构的嵌入式

By Ne0inhk