为两个站点配置 Apache2、Django

为两个站点配置 Apache2、Django

我正在尝试设置 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 没有 VirtualHosts。”

我在这里可能做错了什么?

更新 这似乎是 DNS 问题。建议的更改对 LAN 内部的请求(路由器已将主机名 beta.example.com 指定为服务器的本地 IP 地址)有效,但对 LAN 外部的请求无效。查看 other_vhosts_access.log 可发现,LAN 内部对 beta.example.com 的请求显示为 beta.example.com,而外部请求显示为 example.com。

我昨晚没注意到这一点,因为我从 LAN 外部查看了服务器行为,而没有检查内部请求。抱歉。

我会去查看 DNS 安排。谢谢您的帮助。

答案1

我不确定这是否就是您的问题,但 NameVirtualHost 没有冒号。此外,测试版网站的“Location”不正确。在两种情况下,请将您的 Location 标签放在 VirtualHost 容器内,并在两种情况下都坚持使用“/”。

相关内容