文章目录
提示:以下是本篇文章正文内容,下面案例可供参考
一、访问主机服务的本质
- 访问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
- 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
- 解压
[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语言编译器
- 配置编译
[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
- 为虚拟主机准备网页文档
[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 "<h1>www.benet.com</h1>" > /var/www/html/benet/index.html
[root@httpd html]# echo "<h1>www.accp.com</h1>" > /var/www/html/accp/index.html
- 添加虚拟主机配置
[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
- 源码编译安装的虚拟主机配置文件路径
<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>
- 加载独立/扩展的配置文件
[root@httpd conf]# vim /usr/local/httpd/conf/httpd.conf
479 # Virtual hosts
480 Include conf/extra/httpd-vhosts.conf //取消注释
- 重启
[root@httpd conf]# systemctl restart httpd
- 在虚拟机终端 打开火狐浏览器,访问 www.accp.com 和 www.benet.com
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>
- 配置主配置文件
[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
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>
- 更改主配置文件
[root@httpd conf]# vim /usr/local/httpd/conf/httpd.conf
Listen 192.168.27.136:80
Listen 192.168.27.136:8080
- 重启
[root@httpd conf]# systemctl restart httpd
[root@httpd conf]# netstat -antp | grep httpd