![Apache 一台服务器上的多个主机-不同的端口](https://linux22.com/image/669837/Apache%20%E4%B8%80%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%E5%A4%9A%E4%B8%AA%E4%B8%BB%E6%9C%BA-%E4%B8%8D%E5%90%8C%E7%9A%84%E7%AB%AF%E5%8F%A3.png)
我已将 apache 配置为监听端口 80 和 8080,并为站点创建了 2 个 conf 文件。
端口 80
<VirtualHost *:80>
DocumentRoot /local/Web
AddHandler cgi-script cgi
Alias /access /local/Web/
<Directory "/local/Web">
AllowOverride All
Options +ExecCGI
DirectoryIndex index.html
</Directory>
</VirtualHost>
访问 127.0.0.1 会从 /local/Web 加载正确的站点
端口 8080
<VirtualHost *:8080>
DocumentRoot /local/Sites
AddHandler cgi-script cgi
Alias /site1 /local/Sites/site1/
Alias /site2 /local/Sites/site2/
Alias /site3 /local/Sites/site3/
<Directory "/local/Sites">
AllowOverride All
Options +ExecCGI
DirectoryIndex index.html
</Directory>
</VirtualHost>
访问 127.0.0.1:8080 会出现“访问被拒绝”的情况,这没问题
访问 127.0.0.1:8080/site1 会从 /local/Sites/site1 加载正确的站点
访问 127.0.0.1:8080/site2 会从 /local/Sites/site2 加载正确的站点
访问 127.0.0.1:8080/site3 会从 /local/Sites/site3 加载正确的站点
我无法从端口 80 访问 site1、site2、site3,也无法从端口 8080 访问 /access - 这一切都符合预期。
我现在正尝试使用新的配置文件将新站点添加到端口 80。我希望它有自己的配置文件,如下所示:
<VirtualHost *:80>
DocumentRoot /local/Web
AddHandler cgi-script cgi
Alias /new /local/new
<Directory "/local/Web">
AllowOverride All
Options +ExecCGI
DirectoryIndex index.html
</Directory>
</VirtualHost>
但是当我尝试访问 127.0.0.1/new 时,我得到“未找到对象!”,并且 apache error_log 中没有显示任何内容
知道如何让 /new 在 80 端口上工作吗?
答案1
Apache 不知道 VirtualHost *:80 应该使用哪个配置。有两种方法可以解决此问题:
- 将这两个配置合并到一个虚拟主机中
- 使用 ServerName 和“主机名”URL 来确定应该使用哪个 VirtualHost。