Я изучаю 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