fix: Nginx /mcp 配置位置修复脚本
This commit is contained in:
parent
b2c151622b
commit
eb4152a127
104
server/mcp-server/fix-nginx.sh
Executable file
104
server/mcp-server/fix-nginx.sh
Executable file
@ -0,0 +1,104 @@
|
||||
#!/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
|
||||
Loading…
x
Reference in New Issue
Block a user