我正在學習 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,則頁面僅從那裡載入。另外我應該補充一點,當我從其他位置訪問時,它並不完全“不加載”,它只是顯示一個標題為“Index of /”的 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