![配置 Apache 虚拟主机以在同一 IP 地址上运行多个网站](https://linux22.com/image/1522495/%E9%85%8D%E7%BD%AE%20Apache%20%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E4%BB%A5%E5%9C%A8%E5%90%8C%E4%B8%80%20IP%20%E5%9C%B0%E5%9D%80%E4%B8%8A%E8%BF%90%E8%A1%8C%E5%A4%9A%E4%B8%AA%E7%BD%91%E7%AB%99.png)
我已经在我的计算机上设置了 Apache Web 服务器。
并尝试根据域名为同一 IP 提供 2 个站点服务。
我有 2 个域名:
example0.com
example1.com
它们重定向到同一个 IP 地址(我使用“freenom”服务)因此我需要根据域名提供不同的内容。
我正在关注 Digital Ocean 上的这个教程:“如何在 Debian 7 上设置 Apache 虚拟主机”
我已经完成了所有步骤,除了最后一步(“设置本地主机”)。
结果是我得到了每个域名相同的内容。
我有/etc/apache2/sites-available/
:example0.com.conf
、、example1.com.conf
和000-default.conf
。default-ssl.conf
我example0.com.conf
得到了:
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
ServerName example0.com
ServerAlias www.example0.com
DocumentRoot /var/www/example0.com/public_html
example1.com.conf
我得到了同样的东西,但是用example0example1
代替
我用了:
a2ensite example0.com
a2ensite example1.com
和
service apache2 restart
我做错了什么?
答案1
我认为你的方向是对的。检查每一步!它一定有效。
您应该为两个不同的网页创建两个目录。假设:
/var/www/example0.com/public_html
/var/www/example1.com/public_html
然后您必须设置目录的所有者:
sudo chown -R $USER:$USER /var/www/example0.com/public_html
sudo chown -R $USER:$USER /var/www/example1.com/public_html
其中 $USER 是 apache 的所有者。这取决于您的系统。可能是 www-data、apache、http 或任何其他。我猜在 Debian 上应该是 www-data
然后使目录可读且可执行:
sudo chmod -R 755 /var/www
让我们为每个创建一个不同的 html 网页(两种情况下都是 index.html):
<html>
<head>
<title>Welcome to example0.com</title>
</head>
<body>
<h1>Success, example0.com is working!</h1>
</body>
</html>
和
<html>
<head>
<title>Welcome to example1.com</title>
</head>
<body>
<h1>Success, example1.com is working!</h1>
</body>
</html>
将两个文件分别保存在各自的目录中(/var/www/example0.com/public_html
和/var/www/example1.com/public_html
)。我再说一遍,两个文件的名称都是 index.html
然后让我们创建 VirtualHosts 配置文件。我们使用默认文件作为模板:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example0.com.conf
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example1.com.conf
然后使用 vi、nano 或任何文本编辑器软件编辑每个文件。让我们从 example0.conf 开始
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName example0.com
ServerAlias www.example0.com
DocumentRoot /var/www/example0.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
然后对第二个文件进行同样的操作:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName example1.com
ServerAlias www.example1.com
DocumentRoot /var/www/example1.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
然后,我们将激活新站点:
sudo a2ensite example0.com.conf
sudo a2ensite example1.com.conf
然后,重新启动 apache 服务以使更改生效:
sudo service apache2 restart
就这样。
如何测试?您可以更改 hosts 文件以访问新的 Web 服务器:
127.0.0.1 localhost
127.0.1.1 guest-desktop
111.111.111.111 example0.com www.example0.com
111.111.111.111 example1.com www.example1.com
当然你必须将 111.111.111.111 ip 更改为真实的 ip,甚至是你的 LAN ip。
然后,您可以在更改 hosts 文件的机器上进行测试,尝试使用浏览器访问http://example0.com
并http://example1.com
祝你好运!