我正在尝试设置 apache2 和 django 以支持来自同一服务器的两个不同站点 example.com 和 beta.example.com。但是对 beta.example.com 的请求将发送到 example.com。
我的 apache 配置文件包括:
NameVirtualHost *:80
Include /var/www/main/sites-enabled
Include /var/www/beta/sites-enabled
对于 main/,sites-enabled 包含一个文件 main,该文件链接到 sites/available/main。这包括:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /home/mycode/main
</VirtualHost>
<Location "/">
[Django & Python stuff]
SetEnv DJANGO_SETTINGS_MODULE main.settings
</Location>
对于 beta/,sites-enabled 有一个文件 beta,它有一个类似的符号链接。
<VirtualHost *:80>
ServerName beta.example.com
DocumentRoot /home/mycode/beta
</VirtualHost>
<Location "/beta.example.com/">
[Django & Python stuff]
SetEnv DJANGO_SETTINGS_MODULE beta.settings
</Location>
我已经设置了我的 DNS,因此 beta.example.com 被转发到 example.com(我认为;我在 DNS 上很弱)。我确实认为对 beta.example.com 的请求正在访问 http 服务器,因为访问日志显示了对与 beta.example.com 相关的图像文件的请求(我已经配置为 Apache,而不是 Django,处理图像文件) .
但是我在 beta.example.com 获得的页面是我期望 example.com 的页面。当我启动服务器时,我被警告“NameVirtualHost *:80 has no VirtualHosts”。
我在这里可能做错了什么?
更新这似乎是一个 DNS 问题。建议的更改适用于 LAN 内的请求(路由器已将主机名 beta.example.com 分配为服务器的本地 IP 地址),但不适用于 LAN 外的请求。查看 other_vhosts_access.log 显示,对 beta.example.com 的内部 LAN 请求显示为 beta.example.com,而外部请求显示为 example.com。
我昨晚错过了这个,因为我从 LAN 外部查看了服务器行为,并没有检查内部请求。对不起。
我去看看DNS安排。谢谢您的帮助。
我不确定这是否正是您的问题,但 NameVirtualHost 没有冒号。此外,测试版站点的“位置”不正确。在这两种情况下都将您的 Location 标签放在 VirtualHost 容器中,并在两种情况下都使用“/”。