xampp/Apache如何实现一台服务器配置运行多个网站?

内容纲要

Apache的虚拟主机是一种允许在同一台机器上,运行超过一个网站的解决方案。

虚拟主机有两种:

  • 一种叫基于IP的(IP-based)

  • 另一种叫基于名字的(name-based)。

Apache实现一台服务器配置、运行多个网站的方法总共有3种:

  • 通过不同的IP地址

  • 通过不同的域名

  • 通过不同的端口号

一、基于IP的虚拟主机,如何配置一台服务器多个网站

    对于基于IP的虚拟主机来说,必须为每个虚拟主机配备一个单独的IP。也就是说你的服务器必须有多个IP地址。对于这种方式,我们在本地就可以做一个实验来进行配置。

    配置基于IP的虚拟主机,有两种方法:

    第一种方法启动多个apache伺服程序,每个实例使用单独的配置文件,一般来说,在同一台机器上,架设两个网站,这两个网站互相之间不希望对方访问自己的文件,就使用这种方式,每个apache实例都是用单独的用户名,组来启动,并且放到不同的目录下,这种方式只要在apche的配置文件中,为Listen命令配置不同的ip即可;

    第二种方法是只启动一个单一的apache进程,使用VirtualHost指令来为不同的站点,配置不同的值,这种配置方式,我们可以在本地做个试验的,由于127.0.0.*的所有ip都是指向本机的,所以,我们可以随便拿两个出来做实验,按照如下方式配置apache,之后,在hosts文件中,将域名绑定到配置的ip上,就可以实现在本地运行多个wp系统的一个配置:

    <VirtualHost 127.0.0.1:80>

        ServerAdmin yourname@domain.com

        DocumentRoot "E:/server110.com/wordpress-latest"

        ServerName server110.com

        ServerAlias www.server110.com

        ErrorLog "logs/wplatest.com-error.log"

        CustomLog "logs/server110.com-access.log" combined

    </VirtualHost>

    <VirtualHost 127.0.0.2:80>

        ServerAdmin yourname@domain.com

        DocumentRoot "E:/server110.com/wordpress-2.9.2"

        ServerName server110.com

        ServerAlias www.server110.com

        ErrorLog "logs/server110.com-error.log"

        CustomLog "logs/server110.com-access.log" combined

    </VirtualHost>

二、基于名字的虚拟主机,如何配置一台服务器多个网站

    基于名字的虚拟主机比起基于IP的来说,配置要更加简单,它只要依靠客户端发送的HTTP头信息中的HOST字段来判断,服务器到底要服务哪个虚拟主机。一般情况下,还是比价推荐使用这种方式。因为IP资源日渐稀缺,对于一般用户来说,为一台服务器购买多个IP也是成本较高的。

    使用这种方式配置时,首先是用NameVirtualHost指令,配置次apache实例监听的IP地址和端口号,然后使用VirtualHost指令来配置不同的虚拟主机,上述的例子,用这种方式配置的话,配置方法如下(注意,在这种方式中,ServerName是必填字段):

    NameVirtualHost 127.0.0.1:80

    <VirtualHost *:80>

        ServerAdmin yourname@domain.com

        DocumentRoot "E:/server110.com/wordpress-latest"

        ServerName server110.com

        ServerAlias www.server110.com

        ErrorLog "logs/server110.com-error.log"

        CustomLog "logs/server110.com-access.log" combined

    </VirtualHost>

    <VirtualHost *:80>

        ServerAdmin yourname@domain.com

        DocumentRoot "E:/baidu.com/wordpress-2.9.2"

        ServerName baidu.com

        ServerAlias www.baidu.com

        ErrorLog "logs/baidu.com-error.log"

        CustomLog "logs/baidu.com-access.log" combined

    </VirtualHost>

此种配置方法,也可以在本地简单地进行实验。

修改/etc/httpd/conf/https.conf文件,添加监听端口

  • Listen 9988

  • Listen 9989

接着再修改新建的test.conf

[root@youxi1 conf.d]# vim test.conf

<VirtualHost *:9988>

    ServerAdmin webmaster@dummy-host.example.com

    DocumentRoot /var/www/html/

    ServerName www.youxi1.com

    ErrorLog logs/www.youxi1.com-error_log

    CustomLog logs/www.youxi1.com-access_log common

</VirtualHost>

<VirtualHost *:9989>

    ServerAdmin webmaster@dummy-host.example.com

    DocumentRoot /var/www/html/test/

    ServerName www.youxi1.com

    ErrorLog logs/www.youxi1.com-error_log

    CustomLog logs/www.youxi1.com-access_log common

</VirtualHost>

[root@youxi1 conf.d]# systemctl restart httpd.service

[root@youxi1 conf.d]# vim /etc/hosts

192.168.5.101 www.youxi1.com

Windows修改在C:\Windows\System32\drivers\etc目录下的hosts文件

192.168.5.101 www.youxi1.com

实验结果:

参考地址:

https://www.cnblogs.com/diantong/p/10907069.html

https://www.cnblogs.com/yqyongqing/p/3749255.html