Django 1.5以降ではALLOWED_HOSTSの設定が必要

Django 1.5以降の設定ファイル(settings.py)には, 新たにALLOWED_HOSTSという項目が追加されました. これを設定しない場合, DEBUG=Falseの時は正常に動作しますが, DEBUG=Trueのときは500 Internal Server Errorとなり, アプリケーションが動作しなくなってしまいます. Django 1.5よりも前のプロジェクトをアップデートする際には特に注意が必要です.

ALLOWED_HOSTには公開するサイトのドメイン名を記入すれば良いので, www.example.comというサイトを公開する際にはsettings.py内に以下のように記入すればOKです.

ALLOWED_HOSTS = ["www.example.com"]

ALLOWED_HOSTは後述するセキュリティ上の理由により, FQDNで指定するのが望ましいですが, 以下のようにワイルドカードを用いることも出来ます.

ALLOWED_HOSTS = ["*.example.com"]
ALLOWED_HOSTS = ["*"]

ALLOWED_HOSTについてDjango 1.5のDocumentationに以下のような記述があります.

A list of strings representing the host/domain names that this Django site can serve. This is a security measure to prevent an attacker from poisoning caches and password reset emails with links to malicious hosts by submitting requests with a fake HTTP Hostheader, which is possible even under many seemingly-safe webserver configurations.

ALLOWED_HOSTを適切に設定することでキャッシュポイズニング等を防ぐごとに繋がり, セキュリティを高めてくれるようです.