fix(install): 修复更新/修复模式自动补充TRUST_PROXY配置

- 在 update_patch_env 中添加 TRUST_PROXY 检查和自动补充
- 修复模式(repair_main)现在也会调用 update_patch_env
- 更新 .env.example 添加 TRUST_PROXY 配置说明
- 更新修复模式的提示信息

解决使用Nginx反向代理时HTTPS检测失败的问题

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-27 20:13:37 +08:00
parent c3bc58a88b
commit 3dbd545f6b
2 changed files with 36 additions and 3 deletions

View File

@@ -66,6 +66,24 @@ ALLOWED_ORIGINS=
# HTTP 环境设置为 false
COOKIE_SECURE=false
# ============================================
# 反向代理配置Nginx/Cloudflare等
# ============================================
# 信任代理配置
#
# 配置选项:
# - false: 不信任代理(默认,直接暴露到公网时使用)
# - 1: 信任第1跳代理推荐单层Nginx反向代理时使用
# - 2: 信任前2跳代理Cloudflare + Nginx
# - loopback: 仅信任本地回环地址
# - true: 信任所有代理不推荐易被伪造IP
#
# ⚠️ 重要: 如果使用 Nginx 反向代理并开启 ENFORCE_HTTPS=true
# 必须配置 TRUST_PROXY=1否则后端无法正确识别HTTPS请求
#
TRUST_PROXY=false
# ============================================
# 存储配置
# ============================================

View File

@@ -3828,6 +3828,7 @@ print_update_completion() {
update_patch_env() {
print_step "检查 .env 新增配置..."
if [[ -f "${PROJECT_DIR}/backend/.env" ]]; then
# 检查 ENFORCE_HTTPS
if ! grep -q "^ENFORCE_HTTPS=" "${PROJECT_DIR}/backend/.env"; then
# 基于现有配置做一个合理的默认值如果已启用安全Cookie或公开端口为443优先设为true
COOKIE_SECURE_CUR=$(grep "^COOKIE_SECURE=" "${PROJECT_DIR}/backend/.env" | cut -d'=' -f2- | tr '[:upper:]' '[:lower:]')
@@ -3846,6 +3847,15 @@ update_patch_env() {
else
print_info ".env 已包含 ENFORCE_HTTPS保持不变"
fi
# 检查 TRUST_PROXY反向代理配置对于HTTPS强制模式非常重要
if ! grep -q "^TRUST_PROXY=" "${PROJECT_DIR}/backend/.env"; then
# 默认设置为1假设使用单层Nginx反向代理
echo "TRUST_PROXY=1" >> "${PROJECT_DIR}/backend/.env"
print_warning "已为现有 .env 补充 TRUST_PROXY=1Nginx反向代理场景必需"
else
print_info ".env 已包含 TRUST_PROXY保持不变"
fi
else
print_warning "未找到 ${PROJECT_DIR}/backend/.env请手动确认配置"
fi
@@ -4109,6 +4119,7 @@ confirm_repair() {
echo "本脚本将执行以下操作:"
echo ""
echo "【将会重新配置】"
echo " ✓ 补充缺失的环境变量TRUST_PROXY、ENFORCE_HTTPS等"
echo " ✓ 重新生成Nginx配置应用最新配置"
echo " ✓ 重启后端服务"
echo " ✓ 重载Nginx服务"
@@ -4116,12 +4127,12 @@ confirm_repair() {
echo "【将会保留】"
echo " ✓ 数据库文件(用户数据)"
echo " ✓ 用户上传的文件"
echo " ✓ .env 配置文件"
echo " ✓ .env 配置文件(仅补充缺失项)"
echo " ✓ SSL证书"
echo -e "${NC}"
echo ""
print_info "适用场景: 更新配置、修复nginx配置错误、重新应用设置"
print_info "适用场景: 更新配置、修复nginx配置错误、修复HTTPS访问问题、重新应用设置"
echo ""
read -p "确定要执行修复吗? (y/n): " confirm < /dev/tty
@@ -4300,6 +4311,7 @@ print_repair_completion() {
echo ""
echo -e "${CYAN}修复内容:${NC}"
echo " ✓ 环境配置已检查并补充缺失项TRUST_PROXY、ENFORCE_HTTPS等"
echo " ✓ Nginx配置已更新到最新版本"
echo " ✓ 服务已重启"
echo ""
@@ -4307,7 +4319,7 @@ print_repair_completion() {
echo -e "${CYAN}保留的数据:${NC}"
echo " ✓ 数据库(用户、分享链接等)"
echo " ✓ 用户文件storage目录"
echo " ✓ 配置文件(.env"
echo " ✓ 配置文件(.env,仅补充缺失项"
echo ""
# 显示访问地址
@@ -4361,6 +4373,9 @@ repair_main() {
# 读取现有配置
repair_load_existing_config
# 补充缺失的环境配置(如 TRUST_PROXY, ENFORCE_HTTPS 等)
update_patch_env
# 重新生成nginx配置
repair_regenerate_nginx_config