![Debian 上的 Apache 虚拟主机配置](https://linux22.com/image/499306/Debian%20%E4%B8%8A%E7%9A%84%20Apache%20%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E9%85%8D%E7%BD%AE.png)
我对 apache 配置还不熟悉,如果有人能帮助我解决以下问题,我将非常高兴。我在虚拟专用服务器上运行 apache,运行的是 debian 操作系统。
在 /etc/apache2/sites-available 中,我定义了两个虚拟主机,site1.com.conf 和 site2.com.conf。在 /etc/apache2/sites-enabled 中,我有一个指向 site1.com.conf 的符号链接。虚拟主机定义如下:
网站1.com.conf
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName site1.com
ServerAlias www.site1.com site1.com
DirectoryIndex index.html index.htm index.php
DocumentRoot /var/www/site1
<Directory /var/www/site1>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
LogLevel warn
ErrorLog /var/log/apache2/site1_error.log
CustomLog /var/log/apache2/site1_access.log combined
ServerSignature Off
</VirtualHost>
网站2.com.conf
<VirtualHost *:80>
ServerAdmin hostmaster@wharfage
ServerName site2.com
ServerAlias www.site2.com site2.com
DirectoryIndex index.html index.htm index.php
DocumentRoot /var/www
LogLevel debug
ErrorLog /var/log/apache2/site2_error.log
CustomLog /var/log/apache2/site2_access.log combined
ServerSignature Off
<Location />
Options -Indexes
</Location>
Alias /favicon.ico /srv/site2/static/favicon.ico
Alias /static /srv/site2/static
# Alias /media /usr/local/lib/python2.5/site-packages/django/contrib/admin/media
Alias /admin/media /var/lib/python-support/python2.5/django/contrib/admin/media
WSGIScriptAlias / /srv/site2/wsgi/django.wsgi
WSGIDaemonProcess site2 user=samj group=samj processes=1 threads=10
WSGIProcessGroup site2
</VirtualHost>
然而,奇怪的事情发生了。我能够按预期导航到 www.site1.com。它会加载 /var/www/site 中的内容,而我在 site1.com.conf 中已将其定义为 DocumentRoot。但是,如果我导航到 www.site2.com,它不会加载 /var/www 中的 index.html(它被定义为 site2.com.conf 的 DocumentRoot),如上所示,而是加载 /var/www/site1 中的内容。地址栏中的 URL 仍然是 www.site2.com。因此,我有以下两个问题:
问1)为什么 www.site2.com 的 DocumentRoot 已定义为 /var/www ,但却显示 /var/www/site1 的内容?
问2)由于 site2.com.conf 在 sites-enabled 中没有符号链接,我怎么能够导航到 www.site2.com 呢?
抱歉,如果我的问题听起来很菜鸟,但如果有人能解释这一点我会非常高兴。
谢谢。
答案1
您使用什么地址并不重要。如果 IP 地址相同,您可以使用 site3.com 并仍然访问 site1。第一个VirtualHost
将为所有不匹配任何ServerName
或 的主机名提供服务ServerAlias
。您需要符号链接该site2.com.conf
文件(或使用a2ensite
)才能访问它。