もうタイトルがすべてなんですが、Djangoをデプロイした際のURLのサブドメインにアンダースコアを使っていたところ、下記のようなエラーでハマりました。。
DisallowedHost at /
Invalid HTTP_HOST header: 'hoge_foo.example.com'. The domain name provided is not valid according to RFC 1034/1035.
上記、エラーで検索すると settings.py
に ALLOWED_HOSTS=[ドメイン]
や ALLOWED_HOSTS=['*']
を設定すればいけるという回答が多くでますが、、
サブドメインにアンダースコア(_)を使っていた場合はALLOWED_HOSTSを正しく設定してもエラーが解消できません。
そのため、hoge_foo.example.com
の場合、hoge-foo.example.com
のようにする必要があります。
ドメインにアンダースコアが含まれてはいけないとか、なんでアプリ側で律儀に制限してるんだ、、
参考
・ django - 使用nginx部署时出现 DisallowedHost at /
・ SuspiciousOperation Invalid HTTP_HOST header with Django
・ Can (domain name) subdomains have an underscore “_” in it?