调试Apache/Django/WSGI错误请求(400)错误

 舍舍与你-6 发布于 2023-02-13 14:57

我的简单Django应用程序在调试模式下工作正常(manage.py runserver),并且在我的开发箱上的WSGI + Apache下工作,但当我推送到EC2时,我开始接收Bad Request (400)任何URL的间歇性(10-80%的时间)错误我试图查看(无论是在我的应用程序中还是在Django管理员中.

我在哪里可以找到关于此的调试信息?没有任何东西出现/var/log/apache2/error.log,即使有LogLevel=info.我检查了版本,记录了Request环境(参见ModWSGI Debugging Tips),看不出有什么重大差异.

剩下的一个想法是,我正在使用Ubuntu 12.04(libapache2-mod-wsgi 3.3-4build1)的mod_wsgi,它是针对Python 2.7.1构建的; 我有Python 2.7.3.Django是1.6,比Ubuntu Precise版本更新.我不愿意从源代码开始构建软件包,因为它很难清理,这看起来像是次要的版本更改......

谢谢您的帮助.

(供参考,这里是Apache配置和WSGI应用程序)

Apache配置(000默认)


    ServerAdmin webmaster@localhost
    DocumentRoot /var/www
    WSGIScriptAlias /rz /usr/local/share/rz/rz.wsgi
    ...

rz.WSGI app

import os
import sys
import django.core.handlers.wsgi
import pprint

path = '/usr/local/share/rz'
if path not in sys.path:
    sys.path.insert(0, path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'rz.settings'

class LoggingMiddleware:
    def __init__(self, application):
        self.__application = application

    def __call__(self, environ, start_response):
        errors = environ['wsgi.errors']
        pprint.pprint(('REQUEST', environ), stream=errors)

        def _start_response(status, headers, *args):
            pprint.pprint(('RESPONSE', status, headers), stream=errors)
            return start_response(status, headers, *args)

        return self.__application(environ, _start_response)

application = LoggingMiddleware(django.core.handlers.wsgi.WSGIHandler())

teewuane.. 106

将ALLOWED_HOSTS设置添加到您的settings.py中,如此...

ALLOWED_HOSTS = [
    '.example.com', # Allow domain and subdomains
    '.example.com.', # Also allow FQDN and subdomains
]

我遇到了同样的问题,并在文档中找到了答案

更新:django 1.6文档不再在线,我更新了链接,转到django 1.7文档进行ALLOWED_HOSTS设置.

2 个回答
  • 如果您确实设置了ALOWED_HOSTS- 请确保您的主机名不包含下划线.这在技术上是非法的.

    我不得不打印出各种函数,然后归结为这个正则表达式无法检测到域 django.http

    host_validation_re = re.compile(r"^([a-z0-9.-]+|\[[a-f0-9]*:[a-f0-9:]+\])(:\d+)?$")
    

    事实上,我的域名中有一个下划线.

    2023-02-13 14:58 回答
  • 将ALLOWED_HOSTS设置添加到您的settings.py中,如此...

    ALLOWED_HOSTS = [
        '.example.com', # Allow domain and subdomains
        '.example.com.', # Also allow FQDN and subdomains
    ]
    

    我遇到了同样的问题,并在文档中找到了答案

    更新:django 1.6文档不再在线,我更新了链接,转到django 1.7文档进行ALLOWED_HOSTS设置.

    2023-02-13 14:59 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有