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

Ubuntu 18部署Django+mod_wsgi登录时遇Apache错误求助

Django应用在Ubuntu 18上mod_wsgi登录时出现截断响应头及段错误的解决思路

问题现象

Django应用在Ubuntu 16实例通过mod_wsgi运行正常,但在Ubuntu 18实例登录时出现以下错误日志:

[Tue Jan 10 22:12:00.930300 2023] [wsgi:error] [pid 11481:tid 140103479047936] [client 10.61.23.144:61958] Truncated or oversized response headers received from daemon process 'server': /home/.../wsgi.py, referer: https://application/login/?next=/application/
[Tue Jan 10 22:12:00.931998 2023] [core:notice] [pid 6523:tid 140103626501056] AH00052: child pid 11479 exit signal Segmentation fault (11)

已尝试在apache2.conf中添加WSGIApplicationGroup %{GLOBAL},也参考过相关社区建议,问题仍未解决,调至info日志级别后无额外有效信息。

解决思路

  • 排查mod_wsgi与Python版本兼容性:Ubuntu 18默认的mod_wsgi版本可能和Ubuntu 16不同,且可能绑定了系统默认Python。如果你的Django应用使用虚拟环境中的Python,需确认mod_wsgi是否正确编译适配该版本。可重新编译mod_wsgi并指定虚拟环境Python路径:

    sudo apt-get install apache2-dev python3-dev
    pip install mod_wsgi
    mod_wsgi-express module-config
    

    将输出的配置内容替换Apache的mods-available/wsgi.load文件原有内容,重启Apache。

  • 调整响应头大小限制:Ubuntu 18的Apache可能收紧了响应头默认限制,导致登录时生成的Cookie或其他响应头超出阈值。在Apache配置中添加以下参数:

    LimitRequestFieldSize 16384
    LimitRequestLine 16384
    

    同时在WSGIDaemonProcess配置中增加响应头缓冲区参数:

    WSGIDaemonProcess server response-header-buffer-size=65536
    

    调整后重启Apache测试。

  • 排查第三方库兼容性:Ubuntu 18的系统库(如OpenSSL、libc等)版本较Ubuntu 16升级,部分Django依赖库可能存在兼容性问题引发段错误。可尝试:

    • 升级Django及所有依赖库到适配Python 3.6+(Ubuntu 18默认Python3.6)的最新稳定版本;
    • 逐一禁用登录相关的第三方中间件或插件,定位是否为某一组件触发的问题。
  • 启用core dump定位段错误:开启core dump获取进程崩溃的详细信息,精准定位段错误根源:

    ulimit -c unlimited
    sudo sysctl -w kernel.core_pattern=/tmp/core.%e.%p.%t
    

    触发错误后,使用gdb分析core文件:

    gdb /usr/sbin/apache2 /tmp/core.apache2.11479.xxxx
    (gdb) bt
    

    通过回溯信息定位到具体出错的代码或库。

内容的提问来源于stack exchange,提问作者timsterc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:40:45