【发布时间】:2017-09-19 13:46:00
【问题描述】:
我在 Ubuntu 16.04 上运行 nginx、gunicorn 和 wagtail。我没有使用 virtualenv。 nginx 和 gunicorn 似乎都可以正常工作,但是当我在浏览器中访问我的域时(比如说 myweb.com),我收到了不允许的主机错误。
这似乎是一个简单的问题,但我已经将 myweb.com 添加为 base.py 中的允许主机,如下所示:ALLOWED_HOSTS = ['myweb.com']。它甚至在请求信息中说 myweb.com 是设置文件中允许的主机,但似乎 wagtail 只是忽略了这一点。我还尝试在开发设置中关闭调试,但它仍然显示调试屏幕。
编辑:具体的错误消息是(使用 myweb.com 而不是实际域):
DisallowedHost at /
Invalid HTTP_HOST header: 'myweb.com'. You may need to add 'myweb.com' to ALLOWED_HOSTS.
Request Method: GET
Request URL: http://myweb.com/
Django Version: 1.11.5
Exception Type: DisallowedHost
Exception Value: Invalid HTTP_HOST header: 'myweb.com'. You may need to add 'myweb.com' to ALLOWED_HOSTS.
Exception Location: /usr/local/lib/python3.5/dist-packages/django/http/request.py in get_host, line 113
Python Executable: /usr/bin/python3
Python Version: 3.5.2
Python Path:
['/home/fixgoats/myweb-root',
'/usr/local/bin',
'/usr/lib/python35.zip',
'/usr/lib/python3.5',
'/usr/lib/python3.5/plat-x86_64-linux-gnu',
'/usr/lib/python3.5/lib-dynload',
'/usr/local/lib/python3.5/dist-packages',
'/usr/lib/python3/dist-packages']
Traceback:
File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/exception.py" in inner
41. response = get_response(request)
File "/usr/local/lib/python3.5/dist-packages/django/utils/deprecation.py" in __call__
138. response = self.process_request(request)
File "/usr/local/lib/python3.5/dist-packages/django/middleware/common.py" in process_request
57. host = request.get_host()
File "/usr/local/lib/python3.5/dist-packages/django/http/request.py" in get_host
113. raise DisallowedHost(msg)
Exception Type: DisallowedHost at /
Exception Value: Invalid HTTP_HOST header: 'myweb.com'. You may need to add 'myweb.com' to ALLOWED_HOSTS.
Request Information:
USER [unable to retrieve the current user]
GET No GET data
POST No POST data
FILES No FILES data
Settings Using settings module myweb.settings.dev
ALLOWED_HOSTS 'myweb.com'
页面上有相当多的信息,但我认为这是可能与问题相关的所有内容
【问题讨论】:
-
如果你能具体说明你遇到的错误会很有帮助
-
@TheCog 我已经添加了一些关于错误的信息
-
尝试 ALLOWED_HOSTS = [*],仅用于测试 ALLOWED_HOSTS。如果可行,请尝试 ALLOWED_HOSTS = ['www.myweb.com', 'myweb.com']
-
现在可以使用 ['*'] 和 ['myweb.com']。但同时我也重新启动了服务器,所以这可能与它有更多关系。我想我不能确定是什么修复了它,也许 gunicorn 需要重新启动。
标签: django settings gunicorn wagtail