为什么我无法让 2 个以上的域名在 apache2 上运行?

为什么我无法让 2 个以上的域名在 apache2 上运行?

我想让 2 个以上的网站在同一个 Apache 服务器上运行。我不知道该怎么做。此示例文件取自我找到的教程。然后我在网上搜索另一个教程并找到了第二个文件。

Apache 似乎使用默认设置,除非我禁用它。当我启用默认设置时,它继续使用我的另一个,直到我禁用它(当我启用它时,它继续使用默认设置...)。我无法让它们同时工作。我该如何配置它?

-编辑- 我更改了第二个主机(前两行)进行了克隆并将域更改为 IP 地址,所以我现在有 3 个,并且我的 IP 和域仍然始终是同一个站点,而不是(mono)测试站点 + 我的主站点。

<VirtualHost *:80>
    ServerName www.local.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/test
    DirectoryIndex index.html index.aspx
    MonoDocumentRootDir "/var/www/test"
    MonoServerPath rootsite "/usr/local/bin/mod-mono-server2"
    MonoApplications rootsite "/:/var/www/test"

    <Directory /var/www/test>
        MonoSetServerAlias rootsite
        SetHandler mono
        AddHandler mod_mono .aspx .ascx .asax .ashx .config .cs .asmx
    </Directory>


</VirtualHost>

第二个域

NameVirtualHost MyTestDomain.com:80
<VirtualHost MyTestDomain.com:80>
    ServerName  MyTestDomain.com
    ServerAdmin webmaster@localhost
    ServerAlias MyTestDomain.com

    DocumentRoot /var/www/myapp_path
    DirectoryIndex index.html index.aspx
    MonoDocumentRootDir "/var/www/myapp_path"
    MonoServerPath rootsite "/usr/local/bin/mod-mono-server2"
    MonoApplications rootsite "/:/var/www/myapp_path"

    <Directory /var/www/myapp_path>
        MonoSetServerAlias rootsite
        SetHandler mono
        AddHandler mod_mono .aspx .ascx .asax .ashx .config .cs .asmx
    </Directory>


</VirtualHost>

答案1

通常,您只需要一个主机定义(*:80in <VirtualHost *:80>),因此只需要一个NameVirtualHost语句。(通常意味着总是,除非您有大量服务器正在监听的 IP。)因此,您的配置应该是这样的:

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName example.com
    # No ServerAlias required: Non-Matching domains go here anyway.
    ...
</VirtualHost>
<VirtualHost *:80>
    ServerName example.org
    ServerAlias www.example.org
    ...
</VirtualHost>

有关详细信息,请参阅For more information, see有关虚拟主机的 Apache2 文档(特别是基于名称的部分)

为什么您的方法不起作用:如果您使用主机名而不是*,这并不意味着当此主机名作为标Host头发送时会使用此虚拟主机块。它只是意味着仅当请求发送到的 IP 地址与主机名解析到的 IP 匹配时才会考虑此块。简而言之:不要在那里使用主机名。

答案2

您的配置中是否有NameVirtualHost *:80某处?您需要通过基于名称的虚拟主机启用多个域。

答案3

只需使用

NameVirtualHost *:80

消除

NameVirtualHost MyTestDomain.com:80

转变

<VirtualHost MyTestDomain.com:80>

对此

<VirtualHost *:80>

然后重启apache

答案4

以下是一个可运行的虚拟服务器的设置。经过反复试验,我得出了这个结论,它可以完美地与多个域配合使用,并且默认虚拟主机保持不变:

添加或NameVirtualHost *:80并将其包含在虚拟主机上方,或者直接将其写入上方包含内容。ports.confhttpd.confapache2.conf

这是基本的工作虚拟主机设置:

/etc/apache2/sites-available/domain.info.conf:

<VirtualHost *:80>
DocumentRoot /var/www/domain.info
ServerName domain.info
ServerAlias *.domain.info
<Directory /var/www/domain.info>
Allow from all
Options +Indexes
ServerSignature Off
</Directory>
</VirtualHost>

DNS 设置:

domain.info.           IN   A          11.11.11.11
www.domain.info.       IN   CNAME      domain.info.

我希望它有帮助。

相关内容