configure Caddy via environment variables
This commit is contained in:
parent
77d50c4791
commit
84b8c22942
27
Caddyfile
27
Caddyfile
@ -1,11 +1,24 @@
|
||||
# Caddy 配置文件 - 前端静态文件 + 后端 API 反向代理
|
||||
# 最小化配置,符合 Caddy 2.x 最佳实践
|
||||
#
|
||||
# 地址配置说明:
|
||||
# - 前端地址从环境变量 FRONTEND_ADDRESS 读取,可以是:
|
||||
# * 域名(如 example.com):自动启用 HTTPS,Caddy 会从 Let's Encrypt 获取 SSL 证书
|
||||
# * 端口(如 :8080):使用 HTTP
|
||||
# - 如果未设置 FRONTEND_ADDRESS,默认使用 :8080
|
||||
# - 后端端口从环境变量 BACKEND_PORT 读取,默认 9001(使用 {$BACKEND_PORT:9001} 语法)
|
||||
# - 可在 .env 文件中设置:
|
||||
# FRONTEND_ADDRESS=example.com # 使用域名(推荐生产环境,自动 SSL)
|
||||
# 或
|
||||
# FRONTEND_ADDRESS=:8080 # 使用端口(开发环境)
|
||||
# BACKEND_PORT=9001
|
||||
# - 注意:使用域名时,确保 DNS 已解析,Caddy 会自动获取 SSL 证书
|
||||
#
|
||||
# 使用说明:
|
||||
# 1. 生产环境:将 :8080 替换为你的域名(如 example.com)
|
||||
# 2. 确保域名 DNS 已解析到服务器 IP
|
||||
# 3. 确保防火墙开放 80 和 443 端口
|
||||
# 4. Caddy 会自动从 Let's Encrypt 获取和续期 SSL 证书
|
||||
# 1. 生产环境:设置 FRONTEND_ADDRESS=your-domain.com,Caddy 会自动获取 SSL 证书
|
||||
# 2. 开发环境:设置 FRONTEND_ADDRESS=:8080 或使用默认值
|
||||
# 3. 确保域名 DNS 已解析到服务器 IP(使用域名时)
|
||||
# 4. 确保防火墙开放相应端口(80、443 用于域名,或自定义端口)
|
||||
# 5. 可选:取消注释 email 行,用于证书到期通知
|
||||
{
|
||||
# 自动 HTTPS 配置(Let's Encrypt)
|
||||
@ -18,7 +31,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
:8080 {
|
||||
{$FRONTEND_ADDRESS::8080} {
|
||||
# 静态资源缓存
|
||||
@static {
|
||||
file
|
||||
@ -42,7 +55,7 @@
|
||||
|
||||
# API 反向代理
|
||||
handle /api/* {
|
||||
reverse_proxy localhost:9001 {
|
||||
reverse_proxy localhost:{$BACKEND_PORT:9001} {
|
||||
header_up X-Real-IP {remote_host}
|
||||
header_up X-Forwarded-For {remote_host}
|
||||
header_up X-Forwarded-Proto {scheme}
|
||||
@ -51,7 +64,7 @@
|
||||
|
||||
# 后端 API 反向代理
|
||||
handle /jingrow* {
|
||||
reverse_proxy localhost:9001 {
|
||||
reverse_proxy localhost:{$BACKEND_PORT:9001} {
|
||||
header_up X-Real-IP {remote_host}
|
||||
header_up X-Forwarded-For {remote_host}
|
||||
header_up X-Forwarded-Proto {scheme}
|
||||
|
||||
@ -267,6 +267,12 @@ generate_caddy_service() {
|
||||
mkdir -p "$TMP_DIR"
|
||||
|
||||
local service_file="$TMP_DIR/caddy.service"
|
||||
local env_file_line=""
|
||||
|
||||
# 如果 .env 文件存在,使用 EnvironmentFile 引用(Caddyfile 会读取环境变量)
|
||||
if [ -f "$PROJECT_ROOT/.env" ]; then
|
||||
env_file_line="EnvironmentFile=${PROJECT_ROOT}/.env"
|
||||
fi
|
||||
|
||||
cat > "$service_file" <<EOF
|
||||
[Unit]
|
||||
@ -280,6 +286,7 @@ Type=notify
|
||||
User=${SERVICE_USER}
|
||||
Group=${SERVICE_GROUP}
|
||||
WorkingDirectory=${PROJECT_ROOT}
|
||||
${env_file_line}
|
||||
ExecStart=${CADDY_INSTALL_DIR}/caddy run --environ --config ${CADDY_CONFIG_DIR}/Caddyfile
|
||||
ExecReload=${CADDY_INSTALL_DIR}/caddy reload --config ${CADDY_CONFIG_DIR}/Caddyfile --force
|
||||
TimeoutStopSec=5s
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user