You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

API本地运行正常,生产环境HTTPS下出现500服务器错误求助

排查与解决生产HTTPS环境下的500服务器错误

1. 修复GET请求的参数获取逻辑

你的视图使用GET方法,但错误地通过request.data.get('unique_code')获取参数——Django中,GET请求的查询参数应从request.GET中提取,request.data仅用于处理POST/PUT/PATCH等携带请求体的请求。

生产HTTPS环境严格遵循HTTP规范,GET请求不会携带请求体,导致code始终为None,后续查询Customer.objects.get(unique_code=None)会抛出异常,若存在未被try-except覆盖的错误场景(如序列化器异常、数据库连接失败),就会触发500错误。

修改代码中的参数获取部分:

def get(self, request):
    code = request.GET.get('unique_code')  # 替换request.data为request.GET
    # 后续业务逻辑保持不变

2. 开启生产环境错误日志定位根因

DEBUG = False时,Django不会在前端展示错误详情,必须配置日志来捕获具体错误信息:

在settings.py中添加日志配置:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'ERROR',
            'class': 'logging.FileHandler',
            'filename': '/var/log/django/error.log',  # 确保该路径存在且服务有写入权限
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'ERROR',
            'propagate': True,
        },
    },
}

部署后触发错误,查看日志文件即可获取完整错误栈,精准定位问题。

3. 适配HTTPS环境的JWT与Cookie配置

生产HTTPS环境下,需确保JWT认证和Cookie传输的安全性,补充以下settings.py配置:

SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_HSTS_SECONDS = 31536000
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
# 若使用Nginx等反向代理,需添加以下配置
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

同时验证JWT认证后端在HTTPS环境下的签发/验证逻辑是否正常,避免因环境差异导致认证失败。

4. 检查序列化器与模型的一致性

确认CustomerSerializer能正常序列化生产环境中的Customer实例:

  • 检查模型字段是否有变更但序列化器未同步
  • 验证是否存在数据库字段为空但序列化器未设置allow_null=True的情况

可临时在视图中打印具体错误辅助排查:

except Exception as e:
    import logging
    logger = logging.getLogger(__name__)
    logger.error(f"FetchCustomerError: {str(e)}")
    return Response({
        'message': f'Invalid unique code or server error: {str(e)}',
    }, status=status.HTTP_400_BAD_REQUEST)

5. 验证生产数据库的连接与权限

确认生产环境数据库配置正确,应用服务器有访问数据库的权限,数据库用户具备Customer表的查询权限,排除防火墙/安全组限制导致的数据库连接失败。


内容的提问来源于stack exchange,提问作者Mel Carlo Iguis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 08:01:41