15053971836 注册 / 登录

apache多站点配置

时间: 阅读:468
apache多站点配置

最佳回答

抹不掉的回忆

抹不掉的回忆

2023-01-13 00:18:40

很多人常常看到一台服务器上跑多个站点,不同的域名访问不同的站点,就会有个疑惑:访问的时候并没有在地址栏中加入端口号,多个域名都是解析到这个服务器的IP地址,服务器怎么能够正确的分辨和解析呢?

其实还是对http协议不够了解,看下图一切一目了然

对应的在apache中有rewite和proxy模块,它们就是为了完成这些任务, 一台服务上我们配置多个 vhost,必然需要端口号,
比如:
a.com :80
b.com :8080

实际访问的时候 www.a.com 自动转发到80端口, www.b.com 则自动转发到8080端口。

网站 1:

网站 2:

这样一个服务器的 80 端口上就跑起两个站点.

没事找了个虚拟主机来试用,尝试用给的IP地址访问怎么都访问不了,一直都显示

后来仔细一想,虚拟主机是需要依赖域名的,不然没办法区分vhost,后来找到测试的域名果然可以正常访问了。

最新回答共有2条回答

  • 夜半唱歌
    回复
    2023-01-13 02:02:43

    最简单高效的方法如下:
    1. 先打开Apache的配置文件httpd.conf,在这个文件,
    找到这句:“#Include etc/extra/httpd-vhosts.conf”
    (根据安装路径不同,上面的路径会略有不同)
    把前面的#曲调,即开启了使用虚拟主机的功能;
    2. 在httpd-vhosts.conf中进行虚拟主机的配置操作;也可以在httpd.conf直接写入配置,但是
    不建议这么做;
    3. 打开httpd-vhosts.conf文件,找到NameVirutalHost *:80,这句话的含义是制定这个主机的
    IP地址和端口号;
    4. 关键的virtualhost配置,在NameVirutalHost *:80的下面;
    注意事项:Apache在接受请求时,首先会默认第一个VirtualHost,然后再匹配其他虚拟主
    机,如果没有匹配的,就是第一个VirtualHost起作用。故,在httpd.conf中,将
    <Dicrectory />(这个是所有目录的默认配置)和<Direcotry/opt/lampp/htdocs>的权限,
    都默认设置为deny from all。
    5. virtualhost配置实例:
    <VirtualHost*:80>
    ServerName *
    DocumentRoot </opt/lampp/htdocs/guest>
    <Directory /opt/lampp/htdocs/guest>
    Order deny,allow
    Allow from all
    </Dire