我想要在同一个Apache服务器上运行2+站点。 我不知道该怎么做。 这个示例文件是从我find的教程中获取的。 然后,我在网上search另一个教程,并与第二个文件。
Apache似乎使用默认除非我禁用它。 当我启用默认它继续使用我的另一个,直到我禁用(当我启用它,它继续使用默认…)。 我不能让他们俩一起工作。 我如何configuration这个?
– 编辑 – 我改变了第二主机(前两行)作出克隆,并将域名更改为IP地址,所以我现在有3,我仍然有我的IP和域总是相同的网站,而不是(单声道)testing网站+我的主要网站。
<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>
您通常只需要一个主机定义( <VirtualHost *:80> ),因此只需一个NameVirtualHost语句。 (通常意思是总是除了你有大量的IP服务器正在监听。)所以你的configuration应该是这样的:
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>
有关更多信息,请参阅关于虚拟主机的Apache2文档 (特别是基于名称的部分)
为什么你的方法不起作用:如果你使用主机名而不是* ,这并不意味着当这个主机名作为Host头发送时使用这个虚拟主机块。 这意味着只有在请求发送到的IP地址与主机名parsing到的IP匹配时才会考虑此块。 简而言之:不要在那里使用主机名。
你的configuration中有NameVirtualHost *:80地方吗? 您需要通过基于名称的虚拟主机来打开多个域。
只是使用
NameVirtualHost *:80
去掉
NameVirtualHost MyTestDomain.com:80
开关
<VirtualHost MyTestDomain.com:80>
对此
<VirtualHost *:80>
然后重新启动Apache
麦克和马克都是对的。 NameVirtualHost参数必须与<Virtualhost>的参数完全匹配
NameVirtualHost *:80 <VirtualHost *:80> ServerName www.local.com ServerAdmin webmaster@localhost DocumentRoot /var/www/test </VirtualHost> <VirtualHost *:80> ServerName www.example.com ServerAdmin webmaster@localhost DocumentRoot /var/www/test2 </VirtualHost>
像这样的configuration应该适合你。
这是一个工作的虚拟服务器的设置。 经过试验和错误,我得出了这个结论,它适用于多个域和默认的虚拟主机不变:
在ports.conf或httpd.conf添加NameVirtualHost *:80 ,并将其包含在虚拟主机上方,或直接写入上面的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.
我希望它有帮助。