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