关于django应用程序无效主机的错误电子邮件

关于django应用程序无效主机的错误电子邮件,django,gunicorn,Django,Gunicorn,我的django webapp使用gunicorn(通过nginx代理)正常运行;但我不断收到错误电子邮件:[Django]错误(外部IP):无效的HTTP_主机头:“112.124.42.80”。您可能需要将“112.124.42.80”添加到允许的\u主机。每次IP改变,我怀疑这是一个安全问题 我在一周前才开始注意到这个问题,我所做的唯一重大更改是使用Cloudflare作为CDN进行设置 Report at / Invalid HTTP_HOST header: '112.124.42.8

我的django webapp使用gunicorn(通过nginx代理)正常运行;但我不断收到错误电子邮件:[Django]错误(外部IP):无效的HTTP_主机头:“112.124.42.80”。您可能需要将“112.124.42.80”添加到允许的\u主机。每次IP改变,我怀疑这是一个安全问题

我在一周前才开始注意到这个问题,我所做的唯一重大更改是使用Cloudflare作为CDN进行设置

Report at /
Invalid HTTP_HOST header: '112.124.42.80'. You may need to add '112.124.42.80' to ALLOWED_HOSTS.

Request Method: HEAD
Request URL: http://112.124.42.80/
Django Version: 2.0.6
Python Executable: /xxx/xxxx/xxxx/.virtualenv/bin/python3.6
Python Version: 3.6.8

META:
HTTP_ACCEPT = 'text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2'
HTTP_ACCEPT_ENCODING = 'gzip'
HTTP_CONNECTION = 'close'
HTTP_HOST = '112.124.42.80'
HTTP_PROXY_CONNECTION = 'keep-alive'
HTTP_USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'
HTTP_X_FORWARDED_FOR = '60.191.52.254'
HTTP_X_FORWARDED_PROTO = 'http'
HTTP_X_REAL_IP = '60.191.52.254'
PATH_INFO = '/'
QUERY_STRING = ''
RAW_URI = '/'
REMOTE_ADDR = '127.0.0.1'
REMOTE_PORT = '49562'
REQUEST_METHOD = 'HEAD'
SCRIPT_NAME = ''
SERVER_NAME = '0.0.0.0'
SERVER_PORT = '3030'
SERVER_PROTOCOL = 'HTTP/1.0'
SERVER_SOFTWARE = 'gunicorn/19.9.0'
gunicorn.socket = <gevent._socket3.socket object, fd=13, family=2, type=2049, proto=0>
wsgi.errors = <gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7f81a34dccc0>
wsgi.file_wrapper = ''
wsgi.input = <gunicorn.http.body.Body object at 0x7f81a34dc9e8>
wsgi.multiprocess = True
wsgi.multithread = True
wsgi.run_once = False
wsgi.url_scheme = 'http'
wsgi.version = '(1, 0)'
报告在/
无效的HTTP_主机头:“112.124.42.80”。您可能需要将“112.124.42.80”添加到允许的\u主机。
申请方式:HEAD
请求URL:http://112.124.42.80/
Django版本:2.0.6
Python可执行文件:/xxx/xxxx/xxxx/.virtualenv/bin/python3.6
Python版本:3.6.8
元:
HTTP_ACCEPT='text/html,image/gif,image/jpeg,*;q=.2,*/*;q=.2'
HTTP_接受_编码='gzip'
HTTP_连接='close'
HTTP_主机='112.124.42.80'
HTTP_代理_连接='保持活动状态'
HTTP_USER_AGENT='Mozilla/5.0(Macintosh;英特尔Mac OS X 10_11_6)AppleWebKit/537.36(KHTML,如Gecko)Chrome/53.0.2785.143 Safari/537.36'
HTTP_X_FORWARDED_FOR='60.191.52.254'
HTTP_X_转发的_协议='HTTP'
HTTP_X_REAL_IP='60.191.52.254'
路径信息='/'
查询字符串=“”
原始URI='/'
远程地址='127.0.0.1'
远程_端口='49562'
请求_方法='HEAD'
脚本名称=“”
服务器名称='0.0.0.0'
服务器_端口='3030'
服务器_协议='HTTP/1.0'
服务器软件='gunicorn/19.9.0'
gunicorn.socket=
wsgi.errors=
wsgi.file_包装器=“”
wsgi.input=
wsgi.multiprocess=True
wsgi.multithread=True
wsgi.run_once=False
wsgi.url_scheme='http'
wsgi.version='(1,0)'

我假设您的web应用程序通常通过完全限定的域名访问。听起来好像不同的IP地址指向您的服务器,nginx将这些地址路由到gunicorn,然后再路由到Django。Django在阻止他们方面做了正确的事情,但是如果nginx没有通过他们会更好。您应该更改nginx配置,使其仅代理您期望的地址。您可能需要查看
默认\u服务器设置。

我假设您的web应用程序通常通过完全限定的域名访问。听起来好像不同的IP地址指向您的服务器,nginx将这些地址路由到gunicorn,然后再路由到Django。Django在阻止他们方面做了正确的事情,但是如果nginx没有通过他们会更好。您应该更改nginx配置,使其仅代理您期望的地址。您可能希望查看
默认\u服务器设置。

导入套接字
,然后尝试将
socket.gethostbyname(socket.getfqdn())
添加到
设置.py中的
允许的\u主机
。请解决什么问题?只有允许的\u主机中提到的IP地址或FQDN才允许为您的网站服务。因此,每次您的IP地址更改时,您都需要将其添加到允许的\u主机或添加您机器的FQDN,我想即使IP地址更改,FQDN也应该保持不变
socket.gethostbyname(socket.getfqdn())
获取您机器的当前IP地址,这样您就不需要再次更新
ALLOWED\u HOST
,问题是,我的IP没有改变,应用程序运行顺利,但我仍然收到这些错误消息。我在某处读到,这可能是由以我的服务器为目标的自动bot造成的,但找不到如何检测或解决它。
import socket
并尝试添加
socket.gethostbyname(socket.getfqdn())
设置.py中的
允许的\u主机
。请解决什么问题?只允许允许允许的\u主机中提到的IP地址或FQDN为您的网站提供服务。因此,每次您的IP地址更改时,您都需要将其添加到允许的\u主机或添加您机器的FQDN,我想即使IP地址更改,FQDN也应该保持不变
socket.gethostbyname(socket.getfqdn())
获取您机器的当前IP地址,这样您就不需要再次更新
ALLOWED\u HOST
,问题是,我的IP没有改变,应用程序运行顺利,但我仍然收到这些错误消息。我在某个地方读到,这可能是由针对我的服务器的自动机器人造成的,但找不到如何检测或解决它。