簡體   English   中英

Django Bad Request(400)使用Apache / NginX部署時出錯

[英]Django Bad Request(400) Error in Deployment with Apache/NginX

我正試圖在Debug=False模式下在VPS上午餐。 Debug=True工作正常,但當我將其更改為false時,我收到此錯誤。 我正在使用Apache來渲染python頁面,使用Nginx來提供我的靜態文件。 我嘗試使用這個[回答]: 調試Apache / Django / WSGI錯誤請求(400)錯誤,但它至少對我不起作用。 這是我的wsgi配置:

#wsgi.py
import os
import sys

os.environ['DJANGO_SETTINGS_MODULE'] = 'example.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
path = '/var/www/example'
if path not in sys.path:
    sys.path.append(path)

我還在下面的代碼中添加了以下代碼:

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

要發現您的問題,首先在settings.py中將ALLOWED_HOSTS暫時settings.py為:

ALLOWED_HOSTS = '*'

然后在view某個位置,嘗試打印並查看此命令的輸出:

print(request.META['HTTP_HOST']) # or print(request.get_host())

然后根據輸出,將它(只是它的域作為列表)設置為ALLOWED_HOSTS

筆記:

  • 使用ALLOWED_HOSTS = '*'可能有安全問題,請在此處閱讀。

  • 每次更改后,您都需要重新啟動服務(apache / nginx)。

我的西里爾字母域也遇到了同樣的問題。

我已經將我的域的punicode表示添加到ALLOWED_HOSTS,這解決了問題。

也許這應該作為一個bug發送到Django,但我沒有深入研究(這可能是我的托管配置的問題),只是ab(當然還有瀏覽器)。 這個問題對我來說也是斷斷續續的(通常比下面用ab顯示的更糟)。

沒有punicode

完成請求:20個請求失敗:3

與punicode

完成請求:20個請求失敗:0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM