Apache虚拟目录实现同一个IP绑定多个域名

时间:2021-03-04 12:26:06

在前:我使用的是Xampp,所以路径可能不同

找到apache\conf\extra\httpd-vhosts.conf, 如果没有的话请自己新建httpd-vhosts.conf文件, 并且在httpd.confInclude conf/extra/httpd-vhosts.conf

NameVirtualHost *:80

## 如果没有匹配的ServerName则默认选择第一个配置
<VirtualHost *:80>
    DocumentRoot "D:/Apps/xampp/htdocs/"
    ServerName localhost
    ##ErrorLog "logs/dummy-host2.example.com-error.log"
    ##CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin admin@demo.com
    DocumentRoot "D:/Apps/xampp/htdocs/www/cdn"
    ServerName cdn.demo.com
    ServerAlias cdn.test.com
    ##ErrorLog "logs/cdn.demo.com.com-error.log"
    ##CustomLog "logs/cdn.demo.com.com-access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin admin@demo.com
    DocumentRoot "D:/Apps/xampp/htdocs/www/admin"
    ServerName admin.demo.com
    ServerAlias admin.test.com
    ##ErrorLog "logs/admin.demo.com-error.log"
    ##CustomLog "logs/admin.demo.com-access.log" common
</VirtualHost>

修改host文件将cdn.demo.comadmin.demo.com指向127.0.0.1

重启后我们就可以通过cdn.demo.com来访问apache目录下的cdn文件夹;同样,可以通过admin.demo.com来访问admin文件夹

admin.demo.comcdn.demo.com可以是不同的域名

注意httpd-vhosts.conf
第一条VirtualHost配置优先级最高, 如果请求的地址在其他VirtualHost配置中未找到,则默认指向第一条, 通常也被称为主服务器

VirtualHost *:80 监听任何80端口的访问

VirtualHost * 监听任何地址

VirtualHost 127.0.0.1:80 仅监听127.0.0.1:的访问

VirtualHost后面可以有多个url, 用空格分割

ServerAdmin 管理员联系方式,可以在地址访问错误时现在在页面上,可忽略

ServerName 被映射到的域名

ServerAlias别名, 例如上面的, 通过别名cdn.test.com也可以访问到cdn.demo.com的内容

DocumentRoot 映射目录, 即文件存在的地址, 如果映射目录不存在则可能导致apache启动失败

关于其他包括代理,目录权限等更多内容请参考官方文档