apisix/ssl_manager/setup_webroot_route.sh

51 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
# 设置 APISIX Webroot 路由脚本
# 用于 Let's Encrypt HTTP-01 验证
set -e
APISIX_ADMIN_URL="${APISIX_ADMIN_URL:-http://localhost:9180}"
APISIX_ADMIN_KEY="${APISIX_ADMIN_KEY:-8206e6e42b6b53243c52a767cc633137}"
WEBROOT_PATH="${WEBROOT_PATH:-/var/www/certbot}"
echo "配置 APISIX Webroot 路由用于 Let's Encrypt 验证..."
# 创建 webroot 路由配置
ROUTE_CONFIG=$(cat <<EOF
{
"uri": "/.well-known/acme-challenge/*",
"name": "certbot-webroot",
"plugins": {
"file-logger": {
"path": "/var/log/apisix/certbot-access.log"
}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:9080": 1
}
}
}
EOF
)
# 注意:这个路由需要配合 Nginx 或其他静态文件服务器
# 或者使用 APISIX 的 serverless 插件直接返回文件内容
echo "Webroot 路由配置:"
echo "$ROUTE_CONFIG" | jq .
echo ""
echo "请手动在 APISIX 中创建此路由,或使用以下命令:"
echo ""
echo "curl -X PUT '$APISIX_ADMIN_URL/apisix/admin/routes/certbot-webroot' \\"
echo " -H 'X-API-KEY: $APISIX_ADMIN_KEY' \\"
echo " -H 'Content-Type: application/json' \\"
echo " -d '$ROUTE_CONFIG'"
echo ""
echo "或者配置 Nginx 直接服务静态文件:"
echo " location /.well-known/acme-challenge/ {"
echo " root $WEBROOT_PATH;"
echo " }"