2016-09-15 79 views
2

几个星期前,我花了一段美好的时间设置Apache和Django配置,以强制SSL并在AWS负载平衡器后面运行。现在Django Apache上的无效HTTP_HOST标头 - 使用Require修复?

,它是所有工作很好,我还在不断地接收公共“无效HTTP_HOST头”的错误,并试图找出正确的方式去修复它。

搜索已经给我带来了关于Apache的配置如下回答:

How to disable Django's invalid HTTP_HOST error?

其中建议将以下设置<Directory></Directory>块内的虚拟主机文件:

SetEnvIfNoCase Host .+ VALID_HOST 
Order Deny,Allow 
Deny from All 
Allow from env=VALID_HOST} 

该作品,但根据Apache(https://httpd.apache.org/docs/2.4/howto/access.html),此方法已被弃用。

我通过Apache文档阅读,但是当我尝试使用下面的代码,它只是关闭访问该网站,并给了我一个“未授权”的错误。

<RequireAll> 
    Require host example.org 
</RequireAll> 

不完全确定我错过了什么。我知道我可以使用第一个答案解决问题,只是尝试使用未被弃用的代码找出“正确”的方式。网站使用WSGIDaemonProcess运行Django应用程序,并具有以下设置通过AWS为强制SSL

RewriteEngine On 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteCond %{HTTP:X-Forwarded-For} !="" 
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} 

回答

2

所以,用这种搞乱很长一段时间,我想通了,我正在处理这个问题可能有一些后因为IP地址指向的是AWS EC2实例,而不是我的域,所以主机名反向DNS查找失败。

终于得到它放弃了之后我又回到了如何禁用日志错误后,并使用环境变量,这似乎是工作的尝试。

显然是需要正确的格式是:

<Directory /var/www/html/> 
    SetEnvIfNoCase Host example\.com VALID_HOST 
    Require env VALID_HOST 
    Options 
</Directory> 

这些家伙说得对,只需要更新其用于当前的“规定”指令。

How to disable Django's invalid HTTP_HOST error?

0

无需使用mod_setenvif作为HTTP_HOST已经是一个变量,而您可以直接对其进行评估。

<Directory /var/www/html/> 
    Require expr %{HTTP_HOST} == "example.com" 
    Options 
</Directory>