修复traefik配置文件里面host_ip无法正确获取的问题

This commit is contained in:
jingrow 2025-08-08 07:55:41 +08:00
parent 2a8bd8c9e8
commit 46277dfdb4

View File

@ -53,9 +53,10 @@ get_optimal_host_ip() {
# 测试内网IP是否可达 # 测试内网IP是否可达
if ping -c 2 -W 1 "$private_ip" >/dev/null 2>&1; then if ping -c 2 -W 1 "$private_ip" >/dev/null 2>&1; then
host_ip="$private_ip" host_ip="$private_ip"
log_success "使用内网IP: $host_ip" # 注意:这里不输出日志,避免污染返回值
else else
log_warning "内网IP不可达: $private_ip" # 注意:这里不输出日志,避免污染返回值
:
fi fi
fi fi
@ -63,17 +64,17 @@ get_optimal_host_ip() {
if [ -z "$host_ip" ]; then if [ -z "$host_ip" ]; then
if [ -n "$PUBLIC_IP" ]; then if [ -n "$PUBLIC_IP" ]; then
host_ip="$PUBLIC_IP" host_ip="$PUBLIC_IP"
log_info "使用指定的公网IP: $host_ip" # 注意:这里不输出日志,避免污染返回值
else else
# 尝试自动获取公网IP # 尝试自动获取公网IP
local auto_public_ip=$(curl -s --max-time 5 ifconfig.me 2>/dev/null || curl -s --max-time 5 ipinfo.io/ip 2>/dev/null) local auto_public_ip=$(curl -s --max-time 5 ifconfig.me 2>/dev/null || curl -s --max-time 5 ipinfo.io/ip 2>/dev/null)
if [ -n "$auto_public_ip" ]; then if [ -n "$auto_public_ip" ]; then
host_ip="$auto_public_ip" host_ip="$auto_public_ip"
log_info "自动获取公网IP: $host_ip" # 注意:这里不输出日志,避免污染返回值
else else
# 最后回退使用第一个可用IP # 最后回退使用第一个可用IP
host_ip=$(hostname -I | awk '{print $1}') host_ip=$(hostname -I | awk '{print $1}')
log_warning "使用备用IP: $host_ip" # 注意:这里不输出日志,避免污染返回值
fi fi
fi fi
fi fi
@ -637,6 +638,14 @@ create_env_file() {
# 智能IP选择优先使用内网IP没有内网IP时使用公网IP与traefik配置保持一致 # 智能IP选择优先使用内网IP没有内网IP时使用公网IP与traefik配置保持一致
local host_ip=$(get_optimal_host_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
# 构建PUBLIC_SITE_URL优先使用内网IP没有内网IP时使用公网IP # 构建PUBLIC_SITE_URL优先使用内网IP没有内网IP时使用公网IP
local public_site_url="http://$host_ip:$project_port" local public_site_url="http://$host_ip:$project_port"
@ -1109,6 +1118,14 @@ create_traefik_website_config() {
# 智能IP选择优先使用内网IP没有内网IP时使用公网IP # 智能IP选择优先使用内网IP没有内网IP时使用公网IP
local host_ip=$(get_optimal_host_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规则 # 生成Host规则
local host_rule=$(generate_host_rule "$SITE_URL") local host_rule=$(generate_host_rule "$SITE_URL")