Nginxとgunicornを使用してUbuntu16.04EC2インスタンスにDjangoアプリケーションをデプロイしました。
残念ながら、パブリックIPでの展開が成功した後、パブリックIPでAレコードを更新すると404 Bad Request
ドメインでのエラー-DNSの変更が反映されていることを確認するために長い間待った後でも。パブリックIPによるアプリケーションへのアクセスは引き続き機能します。ネームサーバーのホストに連絡して、Aレコードの設定が正しく設定されているかどうかを確認しました。DNSの変更は成功したようですが、AWS側の問題であるように見えたため、解決できませんでした。
AレコードでパブリックIPを利用することが正しく機能せず、アプリケーションを指していない特定の理由はありますか?
ドメインがデプロイされたDjangoプロジェクトを正常に指すようにするのを手伝ってくれるかもしれない人に感謝します。現在、パブリックIPを介したアプリケーションへのアクセスは引き続き正常に機能します。Aレコード更新されているように見えますが、ドメイン(直接IPではない)を読み込もうとすると、400 BadRequestエラーが発生します。
私は解決策を見つけました。パブリックIPの使用は許容できるようですが、ドメイン名をALLOWED_HOSTS
ファイルとnginx構成の両方に追加できませんでした。
次のことを行うことで、ドメインがAWSEC2デプロイを正常に指すようにすることができました。
私は3つのことをしました:
ALLOWED_HOSTS
:を更新しましたALLOWED_HOSTS = ['12.345.67.890', 'sub.domain.com', 'www.sub.domain.com']
server_name 12.345.67.890 sub.domain.com www.sub.domain.com;
Sudo service nginx restart
Sudo reboot
この後、私のページは正常に読み込まれました。
同じ問題があり、Gunicornでワーカークラスを構成することで解決しました。また、python 3.7、3.6を使用する方が良いです。
Django、Python 3.6の例:
インストール:
pip install gevent
実行:
gunicorn --chdir myApp myApp.wsgi --workers 2 --worker-class=gevent --bind 0.0.0.0:80 --timeout=90 --graceful-timeout=10