我正在学习 Django,想在我拥有的一台 Ubuntu 计算机上测试托管它。我决定使用 Apache 和 mod_wsgi 来提供服务。我让大多数事情都正常工作,但有一件事让我感到困惑。我只能从我的外部 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,那么页面只会从那里加载。另外,我应该补充一点,当我从其他位置访问时,它并不完全“不加载”,它只是显示一个标题为“/ 的索引”的 Apache 页面,没有任何内容。
在所有情况下,是什么阻止了 Apache 提供页面?我该如何让它以 127.0.0.1 等方式提供页面?有没有更好的方式可以托管它?
答案1
您的答案是- 当 HTTP 客户端发送的标头与端口上的其他块之一不匹配apache2ctl -S
时,安装中的“默认”站点优先。Host
ServerName
ServerAlias
<VirtualHost>
如果您希望 Django 网站处理对服务器的所有请求,请禁用默认设置:
a2dissite default
...然后重新启动 Apache。
否则,如果您想要更细致地让 Django 接管,您可以ServerAlias
向其配置中添加<VirtualHost>
:
ServerAlias internal.ip external.ip external.dns.name