ServerName 在 Apache2 和 Ubuntu 中不起作用

ServerName 在 Apache2 和 Ubuntu 中不起作用

设置开发 LAMP 服务器,我希望允许动态子域,又名 ted.servername.com、bob.servername.com。

这是我的 sites-active 文件

<VirtualHost *:80>
    # Admin Email, Server Name, Aliases
    ServerAdmin     [email protected]
    ServerName      happyslice.net
    ServerAlias     *.happyslice.net

    # Index file and Document Root
    DirectoryIndex  index.html
    DocumentRoot    /home/sysadmin/public_html/happyslice.net/public

    # Custom Log file locations
    LogLevel        warn
    ErrorLog        /home/sysadmin/public_html/happyslice.net/log/error.log
    CustomLog       /home/sysadmin/public_html/happyslice.net/log/access.log combined

以下是输出sudo apache2ctl -S

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server happyslice.net (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost happyslice.net (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost happyslice.net (/etc/apache2/sites-enabled/happyslice.net:5)
Syntax OK

服务器主机名是 srv.happyslice.net。

从 apache2ctl 中可以看到,当我使用 happyslice.net 时,我获取了默认虚拟主机,当我使用子域时,我获取了 happyslice.net 主机。因此,后者按我想要的方式运行,但主 URL 却不行。

我在这里尝试了各种各样的变化,但看起来 ServerName 没有被绑定到正确的位置。

有什么想法吗?我被难住了。仅供参考,我正在运行 Apache2.1 和 Ubuntu 10.04 LTS

答案1

我遇到的问题和你几乎一模一样。这是因为默认的 ServerName(在 /etc/apache2/conf.d/servername.conf 中)和我的 VirtualHost 定义文件(/etc/apache2/sites-available/site.com)中的 ServerName 相等。

答案2

对于每个子域名,创建一个与上面列出的文件类似的文件,但只需将子域名作为服务器名称。删除 *.mydomain.com 作为服务器别名。在 apache 中启用配置文件,然后重新启动 apache。

答案3

我相信您要查找的内容需要包含您希望服务器响应的主机名的部分。您目前配置的所有 80 端口流量均被拾取并指向 /home/sysadmin/public_html/happyslice.net/public

尝试添加一个部分和一个具有适当文档根的部分。这样,您可以使用 bill 和 ted 从同一服务器提供不同的内容,同时具有不同服务器的外观和感觉。

http://httpd.apache.org/docs/2.2/vhosts/

答案4

刚刚解决了这个问题,很简单。将您的主机名更改为与虚拟主机名不同的名称。

sudo mcedit /etc/hostname

順利

相关内容