1. 首页 > 技术教程 > 正文

Hermes Agent 绑定域名和 HTTPS:Nginx 反向代理完整配置

很多人在 VPS 上部署 Hermes Agent 后,默认是通过 IP + 端口方式访问的。这在调试阶段还行,但一旦涉及生产环境或对外提供 Web 服务,就必须绑定域名并配置 HTTPS。主机选 之前有读者问过,能不能直接用 Nginx 反代给 Hermes Agent 套一层 HTTPS,答案是可以,而且配置并不复杂。这篇文章就手把手走一遍完整流程,从域名解析到 Nginx 配置,再到常见报错排查,适合刚接触 AI Agent 部署的开发者参考。

zhujixuan TASK 130

为什么要配置 Nginx 反向代理

Hermes Agent 自身通常以 HTTP 协议监听某个端口,比如 8080 或 3000。直接暴露这个端口到公网存在几个问题:

没有加密:HTTP 明文传输,API Key、对话数据容易被中间人截获。

端口管理混乱:多个服务共用一台 VPS 时,端口冲突很难避免。

域名访问不方便:IP 地址记不住,更换服务器后所有配置都得改。

通过 Nginx 做反向代理,可以统一用域名访问,同时用 Let’s Encrypt 免费证书自动续签,安全省心。

准备工作

在开始之前,确认以下几点:

• 一台已经安装好 Hermes Agent 并正常运行在某个端口的 VPS。

• 一个已经解析到该 VPS IP 的域名(例如 `agent.example.com`)。

• 服务器已安装 Nginx(Ubuntu/Debian 用 `apt install nginx`,CentOS 用 `yum install nginx`)。

• 服务器已安装 `certbot` 工具,用于申请 SSL 证书。

如果 Hermes Agent 还没跑起来,先确保它能通过 `http://服务器IP:端口` 正常访问。这一步很关键,别急着配 Nginx,先确认后端服务没问题。

配置 Nginx 反向代理

假设 Hermes Agent 监听在 `127.0.0.1:3000`,我们想通过 `https://agent.example.com` 访问。

#### 第一步:创建 Nginx 配置文件

在 `/etc/nginx/sites-available/` 下新建一个文件,比如 `hermes-agent`:

nginx
server {
listen 80;
server_name agent.example.com;

location / {
proxy_pass http://127.0.0.1:3000;
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;
}
}

这里 `proxy_pass` 指向 Hermes Agent 实际监听的地址和端口。注意如果 Hermes Agent 只监听 `127.0.0.1`,那外部是无法直接访问的,只能通过 Nginx 转发。

#### 第二步:启用站点并测试

ln -s /etc/nginx/sites-available/hermes-agent /etc/nginx/sites-enabled/

nginx -t

systemctl reload nginx

此时访问 `http://agent.example.com` 应该能正常看到 Hermes Agent 的界面。如果打不开,先检查域名解析和防火墙(别急着重装系统,先看日志)。

#### 第三步:申请并配置 HTTPS

使用 certbot 自动申请 Let’s Encrypt 证书,同时让 Nginx 自动重定向 HTTP 到 HTTPS:

apt install certbot python3-certbot-nginx

certbot –nginx -d agent.example.com

跟着提示输入邮箱并同意条款,certbot 会自动修改 Nginx 配置文件,把 HTTP 请求重定向到 HTTPS,并添加 SSL 证书路径。整个过程大概一两分钟。

完成后再次访问 `https://agent.example.com`,浏览器地址栏应该显示安全锁图标。

完整 HTTPS 配置示例

如果 certbot 自动生成的配置不够理想,也可以手动编写。一个生产环境可用的完整配置如下:

nginx
server {
listen 80;
server_name agent.example.com;
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl http2;
server_name agent.example.com;

ssl_certificate /etc/letsencrypt/live/agent.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/agent.example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;

location / {
proxy_pass http://127.0.0.1:3000;
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;

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}

注意 `proxy_set_header X-Forwarded-Proto $scheme;` 这行,它告诉后端请求是 HTTPS 还是 HTTP,很多 AI Agent 依赖这个头来判断是否启用安全模式。

老鸟叮嘱

端口放行:不要忘了在 VPS 防火墙放行 80 和 443 端口。如果用 ufw,执行 `ufw allow 80` 和 `ufw allow 443`。如果用云服务商的安全组,去控制台配。

WebSocket 支持:如果 Hermes Agent 的 Web 界面需要实时通信(比如流式输出),必须加上 `proxy_http_version 1.1` 和 `Upgrade` 头,否则连接会断开。

证书自动续期:certbot 默认会添加定时任务,但建议手动检查一下 `systemctl status certbot.timer` 确保定时器在运行。或者直接在 crontab 里加一条 `0 3 * * * /usr/bin/certbot renew –quiet`。

不要用 root 跑 Nginx:Nginx 默认以 `www-data` 用户运行,证书文件权限要确保 Nginx 能读取。如果遇到权限问题,检查证书目录的权限。

日志排查:如果 HTTPS 配置后无法访问,先看 Nginx 错误日志:`tail -f /var/log/nginx/error.log`。常见问题是 SSL 证书路径写错或权限不足。

FAQ

Q1: Hermes Agent 默认监听哪个端口?
A: 这个取决于你启动时的配置。通常默认是 8080 或 3000,具体看启动日志或配置文件。可以用 `netstat -tlnp | grep hermes` 查看实际监听端口。

Q2: 配置完 Nginx 后,为什么访问域名显示 502 Bad Gateway?
A: 最常见原因是 Hermes Agent 没有运行,或者 Nginx 配置中的 `proxy_pass` 地址写错。先确认 `curl http://127.0.0.1:3000` 能否返回正常内容,再检查 Nginx 配置。

Q3: 必须用 Let’s Encrypt 吗?可以用自己的证书吗?
A: 可以。把 `ssl_certificate` 和 `ssl_certificate_key` 换成你自己的证书路径就行,配置逻辑完全一样。

Q4: 配置 HTTPS 后,Hermes Agent 的 API Key 还需要加密吗?
A: 建议仍然加密存储。HTTPS 只保护传输过程,如果服务器被入侵,API Key 明文存储依然危险。可以用环境变量或加密配置文件管理。

Q5: 一台 VPS 上部署了多个 AI Agent,怎么配置不同的域名?
A: 在 Nginx 中为每个 Agent 创建独立的 server block,每个 block 使用不同的 `server_name` 和 `proxy_pass` 端口,SSL 证书也各自申请。注意不要共用同一个端口。

Q6: 配置完成后,如何测试 HTTPS 是否正常工作?
A: 可以用 `curl -v https://agent.example.com` 查看 SSL 握手信息,或者访问在线 SSL 检测工具(如 SSL Labs)检查证书链和协议支持。

总结

Hermes Agent 绑定域名和 HTTPS 的过程并不复杂,核心就是 Nginx 反向代理加 Let’s Encrypt 证书。关键是搞清楚后端端口、防火墙放行和 WebSocket 支持这几个点。配置文件写好后,记得用 `nginx -t` 检查语法,再重载服务。这套流程同样适用于其他 AI Agent 或 Web 服务,学会之后可以举一反三。

**相关阅读:**

– [VPS部署AI工具100讲:AI Agent、Codex、Claude Code、Hermes Agent、Ollama与自动化工作流实战教程](https://www.zhujixuan.com/jishujiaocheng/9606.html)
– [Hermes Agent VPS 部署教程:Docker Compose 安装和初始化配置](https://www.zhujixuan.com/jishujiaocheng/9872.html)
– [AI Agent自动化运维实战100讲:VPS巡检、日志分析、告警处理与工作流教程](https://www.zhujixuan.com/jishujiaocheng/10066.html)

转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/9874.html 商家投稿邮箱:zhujixuanblog@qq.com