Apacheサーバーは外部IPにのみ応答します

Apacheサーバーは外部IPにのみ応答します

私は 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場合、インストールからの「デフォルト」サイトが優先されることです。HostServerNameServerAlias<VirtualHost>

Django サイトがサーバーへのすべてのリクエストを処理するようにしたい場合は、デフォルトを無効にします。

a2dissite default

...その後、Apache を再起動します。

それ以外の場合、Django に引き継がせる際にもう少し細かい設定をしたい場合は、ServerAliasの設定に を追加できます<VirtualHost>

ServerAlias internal.ip external.ip external.dns.name

関連情報