From e45086261a460dc08829852f9d556c141be9e75a Mon Sep 17 00:00:00 2001 From: jingrow Date: Sun, 10 Aug 2025 14:41:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=B8=80=E4=BA=9B=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E7=9A=84=E5=87=BD=E6=95=B0=E5=AE=9A=E4=B9=89=E5=B9=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install_jsite.sh | 110 +++-------------------------------------------- 1 file changed, 5 insertions(+), 105 deletions(-) diff --git a/install_jsite.sh b/install_jsite.sh index 2d6b54f..86b5254 100755 --- a/install_jsite.sh +++ b/install_jsite.sh @@ -1157,111 +1157,9 @@ start_traefik() { log_success "traefik服务启动/重启完成" } -# 7.4. 解析SITE_URL并生成Host规则 -generate_host_rule() { - local site_url="$1" - - # 移除协议前缀(如果存在) - local domain=$(echo "$site_url" | sed -E 's|^https?://||') - - # 移除端口号(如果存在) - domain=$(echo "$domain" | sed -E 's|:[0-9]+$||') - - # 检查是否为一级域名(不包含子域名) - if [[ "$domain" =~ ^[^.]+\.[^.]+$ ]]; then - # 一级域名,添加 www 前缀 - echo "Host(\`$domain\`) || Host(\`www.$domain\`)" - else - # 二级或更多级域名,只使用原域名 - echo "Host(\`$domain\`)" - fi -} -# 7.5. 创建traefik网站配置文件 -create_traefik_website_config() { - log_info "创建traefik网站配置文件..." - - # 获取项目端口 - local project_port=$(get_or_assign_port "$SITE_NAME") - - # 智能IP选择:优先使用内网IP,没有内网IP时使用公网IP - local host_ip=$(get_optimal_host_ip) - - # 输出IP选择结果 - if [[ "$host_ip" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - log_success "使用IP地址: $host_ip" - else - log_warning "IP地址格式异常: $host_ip" - return 1 - fi - - # 生成Host规则 - local host_rule=$(generate_host_rule "$SITE_URL") - - # 创建conf.d/website目录(如果不存在) - local website_dir="/home/jingrow/traefik-docker/conf.d/website" - if [ ! -d "$website_dir" ]; then - mkdir -p "$website_dir" - chown jingrow:jingrow "$website_dir" - log_success "创建traefik website配置目录" - fi - - # 创建网站配置文件 - local config_file="$website_dir/$SITE_NAME.yml" - - # 检查配置文件是否已存在 - if [ -f "$config_file" ]; then - if [ "$FORCE_UPDATE" = true ]; then - log_warning "traefik网站配置文件已存在,强制更新..." - else - log_warning "traefik网站配置文件已存在,跳过创建" - fi - fi - - # 创建网站配置文件(无论是否存在都重新创建) - cat > "$config_file" << EOF -http: - routers: - main-https: - rule: &host_rule $host_rule - entryPoints: - - websecure - service: main-service - tls: - certResolver: myresolver - main-http-redirect: - rule: *host_rule - entryPoints: - - web - middlewares: - - redirect-to-https - service: noop - services: - main-service: - loadBalancer: - servers: - - url: "http://$host_ip:$project_port" - noop: - loadBalancer: - servers: - - url: "http://127.0.0.1:65535" # 占位用,无实际后端,仅用于HTTP跳转 - - middlewares: - redirect-to-https: - redirectScheme: - scheme: https - permanent: true -EOF - - # 设置文件权限 - chown jingrow:jingrow "$config_file" - chmod 644 "$config_file" - - log_success "traefik网站配置文件创建完成: $config_file (端口: $project_port, 后端IP: $host_ip)" - log_info "Host规则: $host_rule" -} # 8. 安装项目依赖 install_project_dependencies() { @@ -1410,7 +1308,7 @@ generate_host_rule() { } # 创建traefik网站配置文件 -create_traefik_website_config_simple() { +create_traefik_website_config() { local site_name="$1" local domain="$2" local port="$3" @@ -1531,7 +1429,7 @@ create_site() { create_env_file # 创建traefik配置文件 - if create_traefik_website_config_simple "$SITE_NAME" "$SITE_URL" "$port"; then + if create_traefik_website_config "$SITE_NAME" "$SITE_URL" "$port"; then restart_traefik fi @@ -1880,7 +1778,9 @@ main() { if [ "$SKIP_TRAEFIK" = false ]; then install_traefik - create_traefik_website_config + # 直接创建traefik配置 + local project_port=$(get_or_assign_port "$SITE_NAME") + create_traefik_website_config "$SITE_NAME" "$SITE_URL" "$project_port" start_traefik else log_warning "跳过Traefik安装和启动"