Назад | Перейти на главную страницу

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

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

Мой файл 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 и т. Д.? Есть ли лучший способ разместить его?

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

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

a2dissite default

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

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

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