第一步:创建工作目录与所需的文件
# 创建Nginx目录
mkdir Nginx

cd /root/Nginx
第二步:生成自签名 SSL 证书
cd /root/Nginx
mkdir -p certs
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout certs/server.key \
-out certs/server.crt \
-subj "/CN=$(hostname -I | awk '{print $1}')"

第三步:编写 Nginx 配置 (反向代理核心)
创建文件/root/Nginx/nginx.conf,内容如下:
events {}
http {
# 强制 HTTP 跳转 HTTPS
server {
listen 80;
server_name _;
return 301 https://$host$request_uri;
}
# HTTPS 反向代理
server {
listen 443 ssl http2;
server_name _;
ssl_certificate /etc/nginx/certs/server.crt;
ssl_certificate_key /etc/nginx/certs/server.key;
# SSL 协议与加密套件(推荐配置)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
# 转发到 OpenClaw(宿主机 IP + 端口 18789)
proxy_pass http://host.docker.internal:18789;
# 传递真实客户端信息
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket 支持(必须配置,否则 UI 会频繁断连)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 延长超时时间,防止长任务中断
proxy_read_timeout 300s;
}
}
}
将 YOUR_HOST_IP 替换为宿主机的内网 IP(如 172.17.0.1,即 Docker 默认网桥网关)或使用 host.docker.internal(仅 Docker Desktop for Mac/Windows 支持;在 Linux 上需添加 --add-host=host.docker.internal:host-gateway 启动选项)。注意:由于 OpenClaw 已配置 bind: "loopback",必须通过本地代理访问,不能使用 127.0.0.1 从 Nginx 容器内部访问。
第四步:创建 Docker 容器启动命令
cd /root/Nginx
# 运行 nginx 容器,映射端口,挂载配置文件与证书
docker run -d \
--name nginx-proxy \
--restart unless-stopped \
-p 80:80 \
-p 443:443 \
-v $(pwd)/nginx.conf:/etc/nginx/nginx.conf:ro \
-v $(pwd)/certs:/etc/nginx/certs:ro \
nginx:alpine
关键参数解释:
--add-host host.docker.internal:host-gateway:将host.docker.internal映射到宿主机网关,使得容器内部可以用此域名访问宿主机端口。-v ...:ro:挂载只读模式,更安全。-p 80:80 -p 443:443:将宿主机的 80、443 映射到容器,对外提供 HTTP/HTTPS 访问。
第五步:OpenClaw 网关配置
编辑 OpenClaw 配置文件(通常位于 ~/.openclaw/openclaw.json),添加以下配置:
{
"gateway": {
"port": 18789,
"mode": "local",
"bind": "0.0.0.0",
"controlUi": {
"allowedOrigins": [
"http://127.0.0.1:18789",
"http://localhost:18789",
"https://YOUR_SERVER_IP"
]
},
"auth": {
"mode": "token",
"password": "你的访问令牌"
},
"trustedProxies": ["127.0.0.1"]
}
}
![{
"gateway": {
"port": 18789,
"mode": "local",
"bind": "0.0.0.0",
"controlUi": {
"allowedOrigins": [
"http://127.0.0.1:18789",
"http://localhost:18789",
"https://YOUR_SERVER_IP"
]
},
"auth": {
"mode": "token",
"password": "你的访问令牌"
},
"trustedProxies": ["127.0.0.1"]
}
}](https://xiaozou123.cn/wp-content/uploads/2026/05/1777802488-image.png)
注意事项:
"bind": "0.0.0.0",这一项参数必须为0.0.0.0监听所有端口,否则容器(除host模式外)无法访问OpenClaw的网关!新版本又限制了0.0.0.0去监听任意端口,容器最好改为host模式!
检查宿主机防火墙是否放行 80/443
# 查看当前开放端口
firewall-cmd --list-ports
# 如果没有 80/tcp 和 443/tcp,则添加
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload
第六步:验证
1. 检查容器运行状态
docker ps | grep nginx-proxy
2. 查看 Nginx 日志,确认启动无错
docker logs nginx-proxy
3. 浏览器访问
在浏览器地址栏输入(假设宿主机 IP 为 192.168.1.x):
http://192.168.1.x→ 应自动跳转为https://192.168.1.x- 或直接访问
https://192.168.1.x/ui(YACD 面板常见入口)
登录信息就是 OpenClaw 管理界面中配置的 host(本机 IP)、端口(9090)和密码(默认 123456)。
4. 常见问题排查
网关未配置:
openclaw onboard --install-daemon
网关未启动:
openclaw gateway restart
获取带令牌的仪表盘 URL:
openclaw dashboard
令牌:
令牌在openclaw.json文件下,该文件在~/.openclaw目录下

Comments NOTHING