Apache服务器——基于不同端口不同域名搭建的虚拟Web主机

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache服务器——基于不同端口不同域名搭建的虚拟Web主机相关的知识,希望对你有一定的参考价值。

Apache 简介:

Apache HTTP Server是开源软件项目的杰出代表,基于标准的 HTTP 网络协议提供网页浏览服务,在 Web 服务区领域长期保持着超过半数的份额。Apache 服务器可以运行在Linux、Unix、Windows等多种操作系统平台中。

Apache的主要特点:

1.源代码开放;
2.跨平台应用;
3.支持各种 Web 编程语言;
4.模块化设计;
5.运行非常稳定;
6.良好的安全性。

虚拟 Web 主机:

虚拟Web主机是指在同一台服务器中运行多个Web站点,其中的每一个站点实际上并不独自占用整个服务器。在实际企业应用当中,可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本。

使用 httpd 可以非常方便的搭建虚拟主机服务器,只需要运行一个httpd服务就能够同时支撑大量的 Web 站点。httpd 支持的虚拟主机类型包括以下三种:
1.基于域名:为每个虚拟主机使用不同的域名,但是其对应的IP地址是相同的。
2.基于 IP 地址:为每个虚拟主机使用不同的域名,且各自对应的 IP 地址也不相同。
3.基于端口:这种方式并不使用域名、IP 地址来区分不同的站点内容,而是使用不同的 TCP 端口号,因此要求用户在浏览不同的虚拟站点时需要同时指定端口号才能访问。

本次我们在 CentOS7 上搭建一台 Apache 服务器,并在这台服务器上配置基于域名及基于端口的不同 Web 站点。

实验环境:

CentOS 7 (搭建httpd 网站服务,DNS 域名解析服务)
IP 地址:192.168.100.200
挂载镜像光盘到目录/mnt:mount /dev/cdrom /mnt

开始实验:

一:测试 Apache 服务

搭建 httpd 服务:

rpm -ivh /mnt/Packages/httpd-2.4.6-67.el7.centos.x86_64.rpm

编辑httpd.conf配置文件:

vim /etc/httpd/httpd.conf

Listen 192.168.100.200:80
#Listen 80

ServerName www.wzn.com:80

测试:

关闭防火墙,开启服务并尝试访问:

systemctl stop firewalld
setenforce 0
systemctl start httpd

技术分享图片


多个域名及端口的虚拟 Web 主机的配置文件在安装目录下的区域配置项中,其主要形式如下:
<Directory /> //定义"/"目录区域的开始
Options FollowSymlinks //控制选项,允许使用符号链接
AllowOverride None //不允许隐含控制文件中的覆盖配置
Order deny,allow //访问控制策略的应用顺序
Deny from all //禁止任何人访问此区域
</Directory> //定义"/"目录区域的结束


二:基于不同域名的虚拟主机

创建不同域名访问的配置文件:

[[email protected] ~]# cd /etc/httpd/conf.d/
[[email protected] conf.d]# vim vhost.conf 

<Directory /var/www/html>           //设置目录访问权限
     Order allow,deny      
     Allow from all           
</Directory>     

NameVirtualHost 192.168.100.200:80  //设置虚拟主机监听地址
<VirtualHost 192.168.100.200:80>    //设置wzn虚拟站点区域
    ServerAdmin [email protected]        //管理员邮箱
    DocumentRoot /var/www/html/wzn/   //虚拟主机目录
    ServerName www.wzn.com           //域名
    ErrorLog logs/wzn.com-error_log  //错误日志> 
        CustomLog logs/wzn.com-access_log common //访问日志
</VirtualHost>

NameVirtualHost 192.168.100.200:80
<VirtualHost 192.168.100.200:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/wzn01/
    ServerName www.wzn01.com
    ErrorLog logs/wzn01.com-error_log
    CustomLog logs/wzn01.com-access_log common
</VirtualHost>

为虚拟主机准备网页文档:

[[email protected] ~]# mkdir /var/www/html/wzn
[[email protected] ~]# mkdir /var/www/html/wzn01
[[email protected] ~]# echo "<h1>this is wzn.com</h1>" > /var/www/html/wzn/index.html
[[email protected] ~]# echo "<h1>this is wzn01.com</h1>" > /var/www/html/wzn01/index.html

我们要用到域名解析服务,安装 bind 进行域名解析:

[[email protected] ~]# rpm -ivh /mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm 

编辑 bind 主配置文件:

[[email protected] conf.d]# vim /etc/named.conf

options {
        listen-on port 53 { 192.168.100.200; };  //监听本机地址
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };       //允许任意地址解析

编辑区域配置文件,将需要解析的域名放入 zone 中:

[[email protected] ~]# vim /etc/named.rfc1912.zones 

##省略部分信息##
zone "wzn.com" IN {
        type master;
        file "wzn.com.zone";
        allow-update { none; };
};

zone "wzn01.com" IN {        
        type master;
        file "wzn01.com.zone";
        allow-update { none; };
};

配置区域配置文件:

[[email protected] ~]# cd /var/named/
[[email protected] named]# cp -p named.localhost wzn.com.zone
[[email protected] named]# vim wzn.com.zone 

$TTL 1D
@       IN SOA  @ admin (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       192.168.100.200
www IN  A       192.168.100.200

由于 wzn01.com 的区域配置文件和 wzn.com 相同,故直接保留权限复制即可:

[[email protected] named]# cp -p wzn.com.zone wzn01.com.zone

测试

重启服务并测试:

[[email protected] named]# systemctl restart named
[roo[email protected] named]# systemctl restart httpd

技术分享图片
技术分享图片


三:基于端口的虚拟主机

创建不同端口访问的配置文件:

[[email protected] ~]# vim /etc/httpd/conf.d/vhostport.conf
                                //创建独立的配置文件

<Directory /var/www/html>           //设置目录访问权限
    Order allow,deny      
    Allow from all           
</Directory>     

NameVirtualHost 192.168.100.200:80  //设置虚拟主机监听地址
<VirtualHost 192.168.100.200:80>    //设置wzn03虚拟站点区域
   ServerAdmin [email protected]        //管理员邮箱
   DocumentRoot /var/www/html/wzn03   //虚拟主机目录
   ServerName www.wzn03.com           //域名
   ErrorLog logs/wzn03.com-error_log  //错误日志
   CustomLog logs/wzn03.com-access_log common //访问日志
</VirtualHost>

NameVirtualHost 192.168.100.200:8080
<VirtualHost 192.168.100.200:8080>
   ServerAdmin [email protected]
   DocumentRoot /var/www/html/wzn04
   ServerName www.wzn04.com
   ErrorLog logs/wzn04.com-error_log
   CustomLog logs/wzn04.com-access_log common
</VirtualHost>

为虚拟主机准备网页文档:

[[email protected] ~]# mkdir /var/www/html/wzn03
[[email protected] ~]# mkdir /var/www/html/wzn04
[[email protected] ~]# echo "<h1>this is wzn03.com</h1>" > /var/www/html/wzn/index.html
[[email protected] ~]# echo "<h1>this is wzn04.com</h1>" > /var/www/html/wzn01/index.html

更改主配置文件添加监听端口 8080 :

[[email protected] ~]# vim /etc/httpd/conf/httpd.conf

##省略部分信息#
Listen 192.168.100.200:80
Listen 8080     //添加 8080 端口

测试:

重启 httpd 服务,并通过客户机访问不同端口:

[[email protected] ~]# systemctl restart httpd

技术分享图片技术分享图片

以上是关于Apache服务器——基于不同端口不同域名搭建的虚拟Web主机的主要内容,如果未能解决你的问题,请参考以下文章

Apache的虚拟主机

一台服务器搭建两个不同域名的网站如何配置apache

Apache搭建web虚拟主机

Apache基于域名端口IP的虚拟主机配置(Centos 6.5)

Apache 虚拟主机NameVirtualHost

Apache多端口多主机名配置