私は自分のDjangoこれを使用してサーバーをセットアップしています Digital Ocean tutorial 。各ステップに従ってDjangoフレームワークを作成し、実行しましたこのコマンドを使用するサーバー:
./manage.py runserver 0.0.0.0:8000
ポート8000でIPにアクセスしようとすると、次のエラーが表示されました。
DisallowedHost at /
Invalid HTTP_Host header: 'XXX.XXX.XXX.XXX:8000'. You may need to add u'XXX.XXX.XXX.XXX' to ALLOWED_HOSTS.
(Xで置換されたIP)
なんでこんなことが起こっているの?
settings.py
には、ALLOWED_HOSTS
というリストがあります。エラーに表示されるIPアドレスをそのリストに追加する必要があります。
ALLOWED_HOSTS = ['XX.XX.XX.XX']
ポートを追加しないでください。
Djangoは、HTTPリクエストのHost
ヘッダーで、許可されたホスト内にあるURL/IPアドレスをチェックします。
Djangoウェブサイトから:
これは、HTTPホストヘッダー攻撃を防ぐためのセキュリティ対策です。これは、安全に見える多くのWebサーバー構成でも可能です。
https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts
この設定をsettings.pyに含めることができます
ALLOWED_HOSTS = ['*']
重要
アプリを本番環境にデプロイするときにこの構成を変更します
run ngrok http 8000
(これをプロジェクトで実行する前に、プロジェクトがlocalhostで実行する必要があることを確認してくださいpython manage.py runserver)
http://563ae936.ngrok.io -> http:// localhost:80
Setting.pyを編集
ALLOWED_HOSTS = ['563ae936.ngrok.io'、 'localhost'、 '127.0.0.1'、 'testserver']
ここで「563ae936.ngrok.io」を削除してホスト名を置き換えますhttp://またはhttps://
両方を含める(「www.name.com」、「ip.ip.ip.ip」)Debug = Trueに設定してから、IPとURLアドレスを再試行します。
トレースバックセクションに移動して、メッセージを見つけます[DisallowedHost(msg)を発生]クリック->▼ローカル変数
受信ドメイン名と許可されたホストの設定が表示されます。
*Variable Value
*allowed_hosts ['ip.ip.ip.ip', 'name.com']
*domain 'something.com'
*
入力値をsettings.pyにコピーします。古い設定が表示される場合は、サーバーを再起動してください\ nginx