- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
最近,我将我的一个 Django 站点从 http 升级到 https。然而,在那之后,我不断收到 Invalid HTTP_HOST header
错误邮件,而之前我从未收到过此类邮件。
以下是一些日志消息:
[Django] ERROR (EXTERNAL IP): Invalid HTTP_HOST header: '123.56.221.107'. You may need to add '123.56.221.107' to ALLOWED_HOSTS.
[Django] ERROR (EXTERNAL IP): Invalid HTTP_HOST header: 'www.sgsrec.com'. You may need to add 'www.sgsrec.com' to ALLOWED_HOSTS.
[Django] ERROR (EXTERNAL IP): Invalid HTTP_HOST header: 'sgsrec.com'. You may need to add 'sgsrec.com' to ALLOWED_HOSTS.
Report at /apple-app-site-association Invalid HTTP_HOST header: ‘sgsrec.com’. You may need to add ‘sgsrec.com’ to ALLOWED_HOSTS.
Invalid HTTP_HOST header: ‘www.pythonzh.cn’. You may need to add ‘www.pythonzh.cn’ to ALLOWED_HOSTS.
Report at / Invalid HTTP_HOST header: ‘www.pythonzh.cn’. You may need to add ‘www.pythonzh.cn’ to ALLOWED_HOSTS.
Request Method: GET Request URL: http://www.pythonzh.cn/ Django Version: 1.10.6
[Django] ERROR (EXTERNAL IP): Invalid HTTP_HOST header: 'pythonzh.cn'. You may need to add 'pythonzh.cn' to ALLOWED_HOSTS.
奇怪的是,我只更改了我的博客网站www.zmrenwu.com
nginx配置,但似乎所有托管在123.56.221.107上的网站都受到了影响。
当然,我正确设置了 ALLOWED_HOSTS:
ALLOWED_HOSTS = ['.zmrenwu.com']
ALLOWED_HOSTS = ['.sgsrec.com']
ALLOWED_HOSTS = ['.pythonzh.cn']
我的博客网站www.zmrenwu.com
的Nginx配置:
server {
charset utf-8;
server_name zmrenwu.com www.zmrenwu.com;
listen 80;
return 301 https://www.zmrenwu.com$request_uri;
}
server {
charset utf-8;
server_name zmrenwu.com;
listen 443;
ssl on;
ssl_certificate /etc/ssl/1_www.zmrenwu.com_bundle.crt;
ssl_certificate_key /etc/ssl/2_www.zmrenwu.com.key;
return 301 https://www.zmrenwu.com$request_uri;
}
server {
charset utf-8;
listen 443;
server_name www.zmrenwu.com;
ssl on;
ssl_certificate /etc/ssl/1_www.zmrenwu.com_bundle.crt;
ssl_certificate_key /etc/ssl/2_www.zmrenwu.com.key;
location /static {
alias /home/yangxg/sites/zmrenwu.com/blogproject/static;
}
location /media {
alias /home/yangxg/sites/zmrenwu.com/blogproject/media;
}
location / {
proxy_set_header Host $host;
proxy_pass http://unix:/tmp/zmrenwu.com.socket;
为什么会这样?我该如何解决这个问题?
最佳答案
按照其他答案中的建议禁用 DisallowedHost
主机警告在我看来不是正确的解决方案。 Django 向您发出这些警告是有原因的 - 您最好在这些请求到达 Django 之前阻止它们。
您在 nginx 配置中创建了一个新的服务器 block 。因为它是您定义的唯一 HTTPS 服务器,所以它成为该端口的默认服务器。来自documentation :
The
default_server
parameter, if present, will cause the server to become the default server for the specifiedaddress:port
pair. If none of the directives have thedefault_server
parameter then the first server with theaddress:port
pair will be the default server for this pair.
这解释了为什么您突然看到所有这些无效主机错误。任何现在尝试通过 HTTPS 连接到您的服务器的机器人最终都将使用此默认服务器。因为许多机器人将使用假主机名或仅使用您的服务器 IP(两者都不在 ALLOWED_HOSTS
中),这会导致 Django 中出现警告。
那么解决方案是什么?您可以创建一个单独的服务器 block 来处理所有此类无效请求:
server {
listen 443 ssl default_server;
server_name _;
return 444;
}
444
是nginx对disconnect invalid requests的特殊响应状态.
添加此 block 后,它将用于所有与您要响应的主机 header 不匹配的请求,并且任何尝试连接无效主机的内容都将无法连接。
同时,Django 将停止查看对无效主机的请求。
关于python - 将 Django 站点从 http 升级到 https 后,我不断收到 `Invalid HTTP_HOST header` 错误电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47846521/
如果这不是一个错误,那就是另一个错误。如果不是那样的话,那就是别的东西了。我觉得我的项目已经改变了很多,现在只是试图解决代码签名问题,结果一切都搞砸了。我严格按照说明进行操作,但出现错误,例如当前的“
我不确定是否有一些我不知道的内置变量或规则,或者 make 是否有问题,或者我只是疯了。 对于我的一个项目,我有一个如下的 makefile: CC=g++ CFLAGS=-O3 `libpng-co
我有大约 10 个 div,它们必须不断翻转,每个 div 延迟 3 秒 这个 codrops 链接的最后一个效果是我正在寻找的,但无需单击 div http://tympanus.net/Devel
我如何使用 jQuery 持续运行 PHP 脚本并每秒获取响应,以及将鼠标上的少量数据发送到同一脚本? 我真的必须添加一些随机扩展才能让这么简单的计时器工作吗? 最佳答案 To iterate is
JBoss 4.x EJB 3.0 我见过如下代码(大大简化): @Stateless @TransactionAttribute(TransactionAttributeType.NOT_SUPPO
使用 PHPStorm,我试图忽略每次尝试进行 git 提交时 pop 的 workspace.xml。 我的 .gitignore 看起来像: /.idea/ .idea/workspace.xml
我是一名优秀的程序员,十分优秀!