Linux apache配置虚拟主机----基于IP、端口、域名三种方式

配置环境:apache2.4
配置前提:安装配置apache服务器,如果没有配置好可以看我上一篇博客或者其他人的教程。
配置准备:

  1. 在虚拟机网卡添加4个IP地址
  2. 配http.conf 文件

下面是配置准备的教程:
1、添加IP地址

cd /etc/sysconfig/network-scripts/
vi ifcfg-ens33  //你在使用的网卡
IPADDR1=192.168.174.25
IPADDR2=192.168.174.26
IPADDR3=192.168.174.27
IPADDR4=192.168.174.28
IPADDR5=192.168.174.29  
//添加四个IP地址,要注意的是要在同一网关下
service network restart  //重启网络服务,是配置生效
ip address  //查看IP地址,可以发现多了四个副IP,ps:ifconfig查看的是主用IP地址
inet 192.168.174.25/24 brd 192.168.174.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.174.26/24 brd 192.168.174.255 scope global secondary ens33
       valid_lft forever preferred_lft forever
    inet 192.168.174.27/24 brd 192.168.174.255 scope global secondary ens33
       valid_lft forever preferred_lft forever
    inet 192.168.174.28/24 brd 192.168.174.255 scope global secondary ens33
       valid_lft forever preferred_lft forever
    inet 192.168.174.29/24 brd 192.168.174.255 scope global secondary ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::bb0b:257f:60d0:7344/64 scope link 
       valid_lft forever preferred_lft forever

2、配置http.conf文件
因为我们要配置的是多个虚拟主机,而apache默认是不启用虚拟主机的,所以需要去修改配置文件。

cd /usr/local/apache/conf/
vi http.conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf  //把这里的注释删掉
apachectl -t  //这时输入命令就会报找不到文件的警告

这是因为它不在读原来的配置文件了,而是httpd-vhosts.conf这个文件。
同时也可以明白,我们对虚拟主机的配置就是对这个文件的修改。

下面开始配置各种方式的虚拟主机:
1、基于IP:

cd /usr/local/apache/conf/extra
vi httpd-vhosts.conf
//把模板文件注释掉,然后再加入下面的配置文件

    ServerAdmin [email protected]
    DocumentRoot "/usr/local/apache/docs/192.168.174.26.test1.com"
    ServerName 192.168.174.26.test1.com
    ServerAlias www.192.168.174.26.test1.com
    ErrorLog "logs/192.168.174.26.test1.com-error_log"
    CustomLog "logs/192.168.174.26.test1.com-access_log" common



    ServerAdmin [email protected]
    DocumentRoot "/usr/local/apache/docs/192.168.174.27.test2.com"
    ServerName 192.168.174.27.test2.com
    ServerAlias www.192.168.174.27.test2.com
    ErrorLog "logs/192.168.174.27.test2.com-error_log"
    CustomLog "logs/192.168.174.27.test2.com-access_log" common



    ServerAdmin [email protected]
    DocumentRoot "/usr/local/apache/docs/192.168.174.28.test3.com"
    ServerName 192.168.174.28.test3.com
    ServerAlias www.192.168.174.28.test3.com
    ErrorLog "logs/192.168.174.28.test3.com-error_log"
    CustomLog "logs/192.168.174.28.test3.com-access_log" common


以上是我仿照模板写的配置文件,其实也可以不用这么麻烦,完全可以按照自己的喜好来配置,但是鉴于初学者来说模仿是一种很好的学习方式,建议不要直接复制,可以自己修修改改,按照自己的需求来。
修改好配置文件之后,下面就是创建对应目录存放需要读取的文件。
这里我只拿一个作为例子,另外两个其实是一样的配置步骤:

cd /usr/local/apache/
mkidr docs
cd docs
mkdir 192.168.174.26.test1.com
cd 192.168.174.26.test1.com
vi index.html  //输入

it's test1!

另外的也是这样的步骤,全部配置了之后还需要给这些文件授权,需要修改httpd.conf 文件

cd /usr/local/apache/conf
vi httpd.conf
//找到DocumentRoot可以直接修改也可以另外添加
DocumentRoot "/usr/local/apache/docs"

    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted

到了这一步基本上是结束了,重启apache服务,查看结果:

apachectl -t 
apachectl stop
apachectl start

到浏览器输入这三个IP,就会看到index文件内容了,而你访问默认的IP,它就会给你跳转链接:

Linux apache配置虚拟主机----基于IP、端口、域名三种方式_第1张图片
2、基于域名
其实配置步骤大同小异,同样是在httpd-vhosts.conf文件做文章,只不过要先配置好域名映射,即要在hosts文件里写入对应的域名和IP:

vi /etc/hosts
//在里面加入,IP和域名
192.168.174.29  www.domainname1.com
192.168.174.29  www.domainname2.com

这里我配置一个IP地址包含两个域名,并且每个域名访问的页面不同

cd /usr/local/apache/conf/extra/
vi httpd-vhosts.conf
//在里面添加下面配置:

    ServerAdmin [email protected]
    DocumentRoot "/usr/local/apache/docs/192.168.174.29.test4.com"
    ServerName 192.168.174.29.test4.com
    ServerAlias www.192.168.174.29.test4.com
    ErrorLog "logs/192.168.174.29.test4.com-error_log"
    CustomLog "logs/192.168.174.29.test4.com-access_log" common



    ServerAdmin [email protected]
    DocumentRoot "/usr/local/apache/docs/192.168.174.29.test4.com"
    ServerName 192.168.174.29.test4.com
    ServerAlias www.192.168.174.29.test4.com
    ErrorLog "logs/192.168.174.29.test4.com-error_log"
    CustomLog "logs/192.168.174.29.test4.com-access_log" common


//同样的需要加入文件,和上面的一样的步骤,我这里就略过了
apache -t
apachectl stop
apachectl start

因为是域名不同而IP一致,所以需要通过域名访问,这时就要修改客户端的hosts文件,使两个域名指向同一个IP。
我是windows的客户端就需要修改C:\Windows\System32\drivers\etc这下面的hosts文件加入(用记事本打开,或者notepad+++):
192.168.174.29 www.domainname1.com
192.168.174.29 www.domainname2.com
然后再cmd里输入ipconfig/flushdns 刷新DNS服务使hosts文件立即生效
最后在浏览器输入你的域名就可以看到结果了
在这里插入图片描述
ps:要遵守域名的命名规则,如域名不要有空格、特殊符号、、、、、、要不然即使配置没有问题也会无法访问。

3、基于端口
基于端口配置就很就简单了
首先在主配置文件写入端口监听

Listen 80
Listen 192.168.174.26:90

可以看到,在主配置文件里其实是有Listen 80端口,说明所有的IP默认访问的都为80端口,而在后面加入的特定IP的端口就是基于端口虚拟主机的区别

同样的步骤:要在httpd-vhosts-conf写入配置文件


    ServerAdmin [email protected]
    DocumentRoot "/usr/local/apache/docs/192.168.174.26.test6.com"
    ServerName 192.168.174.26.test6.com
    ServerAlias www.192.168.174.26.test6.com
    ErrorLog "logs/192.168.174.26.test6.com-error_log"
    CustomLog "logs/192.168.174.26.test6.com-access_log" common

//同样的要加入对应的配置文件
apachectl -t
apachectl stop
apachectl start//然后在访问端口

Linux apache配置虚拟主机----基于IP、端口、域名三种方式_第2张图片
就会出现你想要的结果。

以上就是全部内容了。

你可能感兴趣的:(Linux apache配置虚拟主机----基于IP、端口、域名三种方式)