105 lines
3.0 KiB
Bash
Executable File
105 lines
3.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# 修复 Nginx /mcp 配置位置错误
|
||
# 问题: sed 把 /mcp location 插到了 /wake/ 块内部
|
||
# 解决: 用正确的完整配置替换
|
||
|
||
set -e
|
||
|
||
CONF="/etc/nginx/sites-enabled/guanghulab"
|
||
|
||
echo "── 修复 Nginx 配置 ──"
|
||
|
||
# 先备份
|
||
cp "$CONF" "${CONF}.bak.$(date +%Y%m%d%H%M%S)"
|
||
|
||
# 用 Python 精确修复:删除错误位置的 /mcp 和 /mcp-health 块,然后在正确位置重新插入
|
||
python3 << 'PYEOF'
|
||
import re, sys
|
||
|
||
conf_path = "/etc/nginx/sites-enabled/guanghulab"
|
||
with open(conf_path, 'r') as f:
|
||
content = f.read()
|
||
|
||
# 1. 删除之前 sed 错误插入的 /mcp 和 /mcp-health 块(可能在不同位置)
|
||
# 匹配从 "# ─── 铸渊 MCP" 到 "}" 的完整块
|
||
content = re.sub(
|
||
r'\s*# ─── 铸渊 MCP Server.*?location = /mcp-health \{[^}]*\}',
|
||
'',
|
||
content,
|
||
flags=re.DOTALL
|
||
)
|
||
|
||
# 2. 在 "location /wake/" 之前插入 /mcp 块(在 server 块顶层)
|
||
mcp_block = '''
|
||
|
||
# ─── 铸渊 MCP Server (/mcp) ───
|
||
# WorkBuddy / CodeBuddy 通过 MCP 协议连接
|
||
location /mcp {
|
||
proxy_pass http://127.0.0.1:8083;
|
||
proxy_http_version 1.1;
|
||
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;
|
||
|
||
# SSE / 长连接支持
|
||
proxy_set_header Connection '';
|
||
proxy_buffering off;
|
||
proxy_cache off;
|
||
proxy_read_timeout 86400s;
|
||
proxy_send_timeout 86400s;
|
||
}
|
||
|
||
# ─── MCP 健康检查 ───
|
||
location = /mcp-health {
|
||
proxy_pass http://127.0.0.1:8083/health;
|
||
access_log off;
|
||
}
|
||
'''
|
||
|
||
# 在 "location /wake/" 之前插入
|
||
if 'location /mcp' not in content:
|
||
content = content.replace('location /wake/', mcp_block + '\n location /wake/')
|
||
|
||
with open(conf_path, 'w') as f:
|
||
f.write(content)
|
||
|
||
print("✅ 配置已修复")
|
||
PYEOF
|
||
|
||
# 测试 Nginx 配置
|
||
echo "── 测试 Nginx ──"
|
||
if nginx -t 2>&1; then
|
||
nginx -s reload
|
||
echo "✅ Nginx 已重载"
|
||
else
|
||
echo "❌ Nginx 配置仍有问题,请检查"
|
||
exit 1
|
||
fi
|
||
|
||
# 验证 MCP Server
|
||
echo ""
|
||
echo "── 验证 ──"
|
||
sleep 1
|
||
|
||
if curl -sf http://127.0.0.1:8083/health > /dev/null 2>&1; then
|
||
echo "✅ MCP Server 本地健康检查通过"
|
||
else
|
||
echo "❌ MCP Server 本地健康检查失败"
|
||
fi
|
||
|
||
if curl -sf https://guanghulab.com/mcp-health > /dev/null 2>&1; then
|
||
echo "✅ MCP Server 公网健康检查通过"
|
||
else
|
||
echo "⚠️ MCP Server 公网健康检查未通过(可能需要等 DNS 或 SSL)"
|
||
fi
|
||
|
||
# 显示密钥
|
||
if [ -f "/data/guanghulab/mcp-server/.access-key" ]; then
|
||
KEY=$(cat /data/guanghulab/mcp-server/.access-key)
|
||
echo ""
|
||
echo "═══════════════════════════════════════"
|
||
echo " 🔑 MCP 连接密钥: $KEY"
|
||
echo "═══════════════════════════════════════"
|
||
fi
|