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