我想让 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
通常,您只需要一个主机定义(*:80
in <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.conf
httpd.conf
apache2.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.
我希望它有帮助。