ジャンゴ ALLOWED_HOSTS

Salman Mehmood 2023年10月10日
ジャンゴ ALLOWED_HOSTS

この記事では、Django Web サイトを取得し、公開する準備を整え、ALLOWED_HOSTS を設定し、Django での Web 展開中に予想される主要な問題を修正する方法について説明します。

主要な展開の問題を修正し、Django で ALLOWED_HOSTS を設定する

安全な Web サイト、ユーザーフレンドリーな Web サイトで安定した Web サイトを作成するには、いくつかの重要な設定を構成する必要があります。 エラーが発生しないようにする方法を見てみましょう。

この URL example.domainsexample という Web サイトがあり、そのサーバーに ssh したとします。 このユーザーのホーム ディレクトリには、基本的な Django プロジェクト インフラストラクチャがあります。

/home/example/exampledomains

これで、プロジェクト ディレクトリ内で多くの変更を行い、そこに settings.py ファイルを作成します。 これにより、設定したい最初の構成設定が表示され、SECRET_KEY が非表示になります。

settings.py の内部に従ってください SECRET_KEY は、文字、数字、および記号の長い文字列に等しいので、このファイルをどうしますか? コメントでわかるように (本番環境では安全ではありません)。

ここで、別のことをしたいと思います。ファイルから SECRET_KEY を読み取りたいのですが、以下の 2 行のコードでそれを行うことができます。 secret_key.txt ファイルに SECRET_KEY をコピーし、秘密鍵を含むプロジェクト ディレクトリのルートに secret_key.txt というファイルを作成します。

システム上のそのパスに移動し、ファイルを開き、秘密鍵を読み取り、それを変数 SECRET_KEY に割り当てます。

先に進み、そのファイルをプロジェクト ディレクトリのルートに保存しましょう。

with open(os.path.join(BASE_DIR, "secret_key.txt")) as f:
    SECRET_KEY = f.read().strip()

settings.py ファイルに HTTPS 設定を追加する必要があるため、settings.py ファイルを開いて一番下までスクロールします。 これら 3つの変数を追加し、それらを True に設定する必要があります。

SESSION_COOKIES_SECURE は、CSRF Cookie が保護され、HTTPS 経由で提供される CSRF_COOKIES_SECURE と同様に、Cookie が HTTP 経由で提供されることを確認します。 SECURE_SSL_REDIRECT と呼ばれる 3 番目の変数は、すべてのトラフィックが HTTP から HTTPS にリダイレクトされることを保証します。

SESSION_COOKIES_SECURE = True
CSRF_COOKIES_SECURE = True
SECURE_SSL_REDIRECT = True

次に、同様にいくつかの HSTS 設定を settings.py ファイルに追加する必要があります。 HSTS に慣れていない場合は、HTTP 厳密なトランスポート セキュリティの略です。

HSTS は基本的に、リクエストのヘッダーにいくつかの情報を追加します。これは、ブラウザーが安全でない接続 (HTTP など) を介して Web サイトに接続してはならず、接続できないことを示しています。

settings.py ファイルの下部にあるこれらの設定を見て、いくつかの変数を作成しましょう。

SECURE_HSTS_SECONDS には非常に大きな数値が格納されます (以下は 1 年分)。 その情報を最初のリクエストとその後のクライアントへのリクエストに入れる必要があり、ブラウザはそれを尊重します。

来年は、安全でない接続を介してあなたのウェブサイトに接続することができないので、それは良いことです.

SECURE_HSTS_PRELOADSECURE_HSTS_INCLUDE_SUBDOMAINSTrue に設定したいのは、サブドメインがなくても、そのリクエスト ヘッダーにサブドメインを含めるのに適しているからです。

SECURE_HSTS_SECONDS = 31536000
SECURE_HSTS_PRELOAD = True
SECURE_HSTS_INCLUDE_SUBDOMAINS = True

次に、ドメイン名が許可されたホスト設定で指定されていることを確認したいと思います。 ここでも、settings.py ファイルで作業を行い、変数 ALLOWED_HOSTS を見つけます (これは既にここで指定されている可能性があります。これは単なるドメイン名のリストです)。

このサーバーにサービスを提供または接続できるホスト名は、Django サーバーです。 example.domains を扱っているので、ドメイン名とその www.example.domains バージョンを指定します。

ALLOWED_HOSTS = ["example.domains", "www.example.domains"]

次に、本番環境でのデバッグを確実にオフにする必要があります。 等しい TrueFalse のデバッグの違いを示します。

settings.py ファイルを最初に設定して、DEBUGFalse に設定されていることを確認します。 デフォルトでは、Django プロジェクトを開始すると True になります。

Web ブラウザで、ページに移動して False にデバッグすると、そのページが存在しない場合、わかりやすいエラーが表示されます。 DEBUGTrue に等しい場合よりも優れていることがわかります。

DEBUG = False

次に、静的ファイルを静的ルート ディレクトリに確実にコピーする必要があります。 静的ファイルとは、Django サーバー上の画像、CSS、JavaScript、および HTML 以外の PHP ファイルを意味します。

デフォルトでは、settings.py ファイルにはそのアドレスに静的 URL があります。 静的ルートを追加します。 私たちのケースは、プロジェクト '/static/' のベース ディレクトリにあります。

Django には、次のコマンドを使用してこれらのファイルをその静的ディレクトリにコピーするために実行できる非常に便利な機能があります。

python manage.py collectstatic

最後に、Django の自動展開チェックリストを実行する必要があります。 これは Django が提供する便利な機能です。

プロジェクト ディレクトリのルート内に、以下のコードを入力する必要があります。

python manage.py check --deploy

したがって、この手順に従っている場合、この時点で問題は発生しないはずです。 これを実行する前に、展開前に修正する必要がある個々の問題を示す何かが表示される場合があります。

著者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn