私は Django を学習中で、所有している Ubuntu コンピューターで Django をホストするテストをしたいと考えていました。Apache と mod_wsgi で提供することにしました。ほとんどのことはうまくいきましたが、1 つ困惑していることがあります。Web サイトには外部 IP アドレスからしかアクセスできず、127.0.0.1 や 192.168.xx アドレスからはアクセスできないのです。
/etc/apache2/sites-availableにある私のdjango.confファイルは
<VirtualHost *:80>
WSGIScriptAlias / /home/username/project
ServerName my_external_ip
Alias /media/ /home/username/project/media
Alias /static/ /home/username/project/static
<Directory /home/username/project>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
ServerName を 127.0.0.1 に設定すると、ページはそこからのみ読み込まれます。また、他の場所からアクセスしたときに「読み込まれない」わけではなく、「Index of /」というタイトルの Apache ページがコンテンツなしで表示されるだけであることを付け加えておきます。
Apache がすべてのケースでページを提供できないのはなぜですか? また、127.0.0.1 などでページを提供するにはどうすればよいですか? ホストするより良い方法はありますか?
答え1
答えは、HTTP クライアントが送信するヘッダーがポート上の他のブロックのいずれかまたはと一致しないapache2ctl -S
場合、インストールからの「デフォルト」サイトが優先されることです。Host
ServerName
ServerAlias
<VirtualHost>
Django サイトがサーバーへのすべてのリクエストを処理するようにしたい場合は、デフォルトを無効にします。
a2dissite default
...その後、Apache を再起動します。
それ以外の場合、Django に引き継がせる際にもう少し細かい設定をしたい場合は、ServerAlias
の設定に を追加できます<VirtualHost>
。
ServerAlias internal.ip external.ip external.dns.name