Apache 虚拟主机

文章目录

  • 一、访问主机服务的本质
    • 1.1Apache访问控制
    • 1.2Apache保持连接
    • 1.3配置httpd-default.conf
  • 二、httpd支持的虚拟主机类型
    • 2.1、基于域名
    • 2.2、基于IP地址
    • 2.3、基于端口
  • 三、基于域名访问虚拟主机
    • 3.1安装Apache
    • 3.2虚拟主机提供域名解析
    • 3.3基于IP地址访问虚拟主机
    • 3.4基于端口号进行访问虚拟主机


提示:以下是本篇文章正文内容,下面案例可供参考

一、访问主机服务的本质

  • 访问web服务,本质上看是访问某个端口,通常需要通过访问不同的域名或者端口,
    实现对不同网站的访问(具体到服务器里就是不同目录),这个时候就需要设置网站空间。

1.1Apache访问控制

●作用
控制对网站资源的访问
为特定的网站目录添加访问授权
●常用访问控制方式
客户机地址限制
用户授权限制

1.2Apache保持连接

  • HTTP协议是基于TCP协议之上的,在进行HTTP连接之前,要先进行TCP连接,每个TCP连接都要进行三次握手与四次挥手。建立与关闭连接对于HTTP协议而言会消耗很多的内存与CPU资源。
  • 解决办法是HTTP连接保持。就是尽量地保持客户端的连接,通过一个TCP连接传送多个HTTP请求响应,对于客户
    端可以提高50%以上的响应时间,对于服务器可以降低建立与关闭连接时的资源消耗。

1.3配置httpd-default.conf

vim /usr/local/httpd/conf/extra/httpd-default.conf

Apache 虚拟主机_第1张图片
Apache 虚拟主机_第2张图片

  • KeepAlive On:设置是否打开连接保持功能,后面接OFF表示关闭,接On表示打开。可以根据网站的并发请求量决定是否打开,即在高并发时打开连接保持功能,并发量不高时关闭此功能。
  • MaxKeepAliveRequests 100:用于设置在一次长连接中可以传输的最大请求数量,超过此最大请求数量就会断开连接,最大值的设置决定于网站中网页的内容,一般设置数量会多于网站中所有的元素。
  • KeepAliveTimeout 5:设置来自同一个客户端一次连接多次请求之间的最大间隔时间,即两次请求之间超过该时间连接就会自动断开,从而避免客户端占用连接资源。

二、httpd支持的虚拟主机类型

2.1、基于域名

① 为每个虚拟主机使用不同的域名,但是其对应的IP地址是相同的
② 域名不同–IP相同,端口相同
③ 基于域名是最为普遍的虚拟web主机类型

2.2、基于IP地址

① 为每个虚拟主机使用不同的域名,且各自对应的IP地址也不相同
② 这种方式需要为服务器配备多个网络接口(加网卡,虚拟网卡),因此应用不是很广泛
③ IP不同,端口相同

2.3、基于端口

① 这种方式并不使用域名,IP地址来区分不同的站点内容,而是使用不同的TCP端口号
② 因此用户在浏览不同的虚拟站点时需要同时制定端口号才能访问
③ IP相同,端口不同

三、基于域名访问虚拟主机

3.1安装Apache

[root@httpd ~]# cd /opt
[root@httpd opt]# rz -E
[root@httpd opt]# ls
apr-1.6.2.tar.gz  apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2  rh

Apache 虚拟主机_第3张图片

  • 解压
[root@httpd opt]# tar xf apr-1.6.2.tar.gz
[root@httpd opt]# tar xf apr-util-1.6.0.tar.gz
[root@httpd opt]# tar xf httpd-2.4.29.tar.bz2
  • 解压apr跨平台组件包和httpd源码包到当前目录下;并将跨平台组件包移动到源码包srclib目录下
[root@httpd opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@httpd opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
  • 安装依赖包
[root@httpd opt]# yum -y install \
> gcc \        //C语言的编译器
> gcc-c++ \   //C++编译器
> make \       //源代码编译器
> pcre-devel \  //perl接口开发数据包
> expat-devel \  //用于支持网站解析HTML、XML文件
> perl          //perl语言编译器

Apache 虚拟主机_第4张图片

  • 配置编译
[root@httpd opt]# cd httpd-2.4.29
[root@httpd httpd-2.4.29]# ./configure \
> --prefix=/usr/local/httpd \  //指定路径
> --enable-so \   //开启核心功能模块
> --enable-rewrite \  //开启重写功能,防盗链保护
> --enable-charset-lite \  //字符集设定
> --enable-cgi   //开启通用网关接口,它定义了web服务器运行时外部程序的规范
make && make install
  • 优化配置文件路径,并把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别
ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/
  • 复制/usr/local/httpd/bin/apachectl 这个模板到/etc/init.d/httpd目录下
[root@httpd httpd-2.4.29]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
  • 添加两行内容,加上注释
vim /etc/init.d/httpd
2 # chkconfig: 35 85 21  //35级别自动运行,第85个启动,第21个关闭
3 # description: Apache is a World Wide Web server //设置开机自启

在这里插入图片描述

  • 将httpd加入到系统管理器
[root@httpd httpd-2.4.29]# chkconfig --add httpd
  • 修改主配置文件
[root@httpd httpd-2.4.29]# vim /usr/local/httpd/conf/httpd.conf
52 Listen 192.168.27.136:80
197 ServerName www.kgc.com:80

在这里插入图片描述
在这里插入图片描述

3.2虚拟主机提供域名解析

①部署DNS域名解析服务器,提供域名解析
②在/etc/hosts文件中临时配置域名IP地址的映射关系

[root@httpd httpd-2.4.29]# vim /etc/hosts
echo "192.168.27.136 www.benet.com" >> /etc/hosts
echo "192.168.27.136 www.accp.com" >> /etc/hosts

Apache 虚拟主机_第5张图片
Apache 虚拟主机_第6张图片

  • 为虚拟主机准备网页文档
[root@httpd httpd-2.4.29]# cd /var/www/html
[root@httpd html]# mkdir -p /var/www/html/benet
[root@httpd html]# mkdir -p /var/www/html/accp
[root@httpd html]# ls
accp  benet
[root@httpd html]# echo "

www.benet.com

" > /var/www/html/benet/index.html
[root@httpd html]# echo "

www.accp.com

" > /var/www/html/accp/index.html

Apache 虚拟主机_第7张图片

  • 添加虚拟主机配置
[root@httpd httpd-2.4.29]# cd /opt
[root@httpd opt]# cd /usr/local/httpd
[root@httpd httpd]# cd conf
[root@httpd conf]# ls
extra  httpd.conf  magic  mime.types  original
[root@httpd conf]# cd extra
[root@httpd extra]# ls
httpd-autoindex.conf  httpd-mpm.conf
httpd-dav.conf        httpd-multilang-errordoc.conf
httpd-default.conf    httpd-ssl.conf
httpd-info.conf       httpd-userdir.conf
httpd-languages.conf  httpd-vhosts.conf  //虚拟主机模板文件
httpd-manual.conf     proxy-html.conf

Apache 虚拟主机_第8张图片

  • 源码编译安装的虚拟主机配置文件路径
<VirtualHost 192.168.27.136:80>
    DocumentRoot "/var/www/html/benet"
    ServerName www.benet.com
    ErrorLog "logs/benet.com-error_log"
    CustomLog "logs/benet.com-access_log" common
</VirtualHost>

<VirtualHost 192.168.27.136:80>
    DocumentRoot "/var/www/html/accp"
    ServerName www.accp.com
    ErrorLog "logs/accp.com-error_log"
    CustomLog "logs/accp.com-access_log" common
</VirtualHost>
<Directory "/var/www/html">    #设置目录访问权限
    Options None               #不启用任何的服务器特性
    AllowOverride None         #不允许重写Apache默认配置
    Require all granted        #允许所有主机访问
</Directory> 

Apache 虚拟主机_第9张图片

  • 加载独立/扩展的配置文件
[root@httpd conf]# vim /usr/local/httpd/conf/httpd.conf
479 # Virtual hosts
480 Include conf/extra/httpd-vhosts.conf  //取消注释

Apache 虚拟主机_第10张图片

  • 重启
[root@httpd conf]# systemctl restart httpd
  • 在虚拟机终端 打开火狐浏览器,访问 www.accp.com 和 www.benet.com
    Apache 虚拟主机_第11张图片

3.3基于IP地址访问虚拟主机

  • 创建虚拟网卡
[root@httpd conf]# ifconfig ens33:0 192.168.27.100 netmask 255.255.255.0

在这里插入图片描述

  • 源码编译安装的虚拟主机配置文件路径
[root@httpd conf]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf


<VirtualHost 192.168.27.136:80>
    DocumentRoot "/var/www/html/benet"
    ServerName www.benet.com
    ErrorLog "logs/benet.com-error_log"
    CustomLog "logs/benet.com-access_log" common
</VirtualHost>

<VirtualHost 192.168.27.100:80>  //将IP地址改为虚拟网卡的IP地址
    DocumentRoot "/var/www/html/accp"
    ServerName www.accp.com
    ErrorLog "logs/accp.com-error_log"
    CustomLog "logs/accp.com-access_log" common
</VirtualHost>
<Directory "/var/www/html">
    Options None
    AllowOverride None
    Require all granted
</Directory>

Apache 虚拟主机_第12张图片

  • 配置主配置文件
[root@httpd conf]# vim /usr/local/httpd/conf/httpd.conf

52 Listen 192.168.27.136:80
53 Listen 192.168.27.100:80  //添加监听地址
  • 重启
systemctl restart httpd

在这里插入图片描述

  • 在虚拟机终端的火狐浏览器访问192.168.27.136和192.168.27.100
  • Apache 虚拟主机_第13张图片
    Apache 虚拟主机_第14张图片

3.4基于端口号进行访问虚拟主机

root@httpd conf]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.27.136:80>
    DocumentRoot "/var/www/html/benet"
    ServerName www.benet.com
    ErrorLog "logs/benet.com-error_log"
    CustomLog "logs/benet.com-access_log" common
</VirtualHost>

<VirtualHost 192.168.27.136:8080>  //将端口号由80改为8080
    DocumentRoot "/var/www/html/accp"
    ServerName www.accp.com
    ErrorLog "logs/accp.com-error_log"
    CustomLog "logs/accp.com-access_log" common
</VirtualHost>
<Directory "/var/www/html">
    Options None
    AllowOverride None
    Require all granted
</Directory>

Apache 虚拟主机_第15张图片

  • 更改主配置文件
[root@httpd conf]# vim /usr/local/httpd/conf/httpd.conf
Listen 192.168.27.136:80
Listen 192.168.27.136:8080

Apache 虚拟主机_第16张图片

  • 重启
[root@httpd conf]# systemctl  restart httpd
[root@httpd conf]# netstat -antp | grep httpd

Apache 虚拟主机_第17张图片
Apache 虚拟主机_第18张图片

你可能感兴趣的:(linux,网络)