Сервер Apache отвечает только на внешний IP

Сервер Apache отвечает только на внешний IP

Я изучаю Django и хотел протестировать хостинг на моем компьютере с Ubuntu. Я решил обслуживать его с помощью Apache и mod_wsgi. У меня заработало большинство вещей, но есть одна вещь, которая меня озадачивает. Я могу получить доступ к веб-сайту только с моего внешнего IP-адреса, а не с, скажем, 127.0.0.1 или 192.168.xx.

Мой файл django.conf в /etc/apache2/sites-available выглядит так:

<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, то страница загружается только оттуда. Также я должен добавить, что это не совсем "не загружается", когда я захожу из других мест, это просто показывает страницу Apache под названием "Index of /" без содержимого.

Что мешает Apache обслуживать страницы во всех случаях, и как мне заставить его обслуживать страницы как 127.0.0.1 и т. д.? Есть ли лучший способ разместить его?

решение1

Ваш ответ заключается в том apache2ctl -S, что сайт «по умолчанию» из установки имеет приоритет, когда Hostзаголовок, отправляемый HTTP-клиентом, не соответствует ServerNameодному ServerAliasиз других <VirtualHost>блоков на порту.

Если вы хотите, чтобы ваш сайт Django обрабатывал все запросы к серверу, отключите значение по умолчанию:

a2dissite default

...затем перезапустите Apache.

В противном случае, если вы хотите немного больше нюансов относительно передачи управления Django, вы можете добавить ServerAliasв его конфигурацию <VirtualHost>:

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

Связанный контент