虚拟机的发展历程
IDC数据中心托管–》 半虚架构 opem vz 资源共享–》带宽容易被侵占 --》linux XEN 半虚 QOS 限制带宽 --》 linux 6.0 KVM 全虚架构—》 openstack
虚拟web主机概述
在同一台服务器中运行多个web站点,其中每一个站点并不独立占用一台真正的计算机
通过虚拟web主机可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本
使用httpd可以非常方便的构建虚拟主机服务器,只需要运行一个httpd服务就能够同时支撑大量的web站点
为每个虚拟主机使用不同的域名,但是其对应的IP地址使相同的
域名不同–IP相同,端口相同
基于域名是最为普遍的虚拟web主机类型
为每个虚拟主机使用不同的域名,且各自对应的IP地址也不相同
这种方式需要为服务器配备多个网络接口,因此应用不是很广泛
IP不同,端口相同
这种方式并不使用域名,IP地址来区分不同的站点内容,而是使用不同的TCP端口号
因此用户在浏览不同的虚拟站点时需要同时制定端口号才能访问
IP相同,端口不同
[root@localhost ~]# vim /etc/http/conf/xxx/vhost.conf
1 <VirtualHost *:80> '//针对本服务器所有IP地址'
2 DocumentRoot "/var/www/html/xxx" '//指定站点目录'
3 ServerName www.xxx.com '//指定域名'
4 Errorlog "logs/www.xxx.com.error_log" '//指定错误日志路径'
5 Customlog "logs/www.xxx.com.custom_log" common '//指定访问日志路径'
6 <Directory> "/var/www/html">
7 Require all granted '//设置网页允许所有主机访问,也可以通过denied设置拒绝访问'
8 </Directory>
9 </VirtualHost>
实验环境:一台centos7 设置双网卡 ,一台win10 ,两者绑定同一网卡
[root@localhost network-scripts]# cat ifcfg-ens3
ifcfg-ens33 ifcfg-ens37
[root@localhost network-scripts]# cat ifcfg-ens33
# Generated by parse-kickstart
DEVICE="ens33"
IPV6INIT="yes"
BOOTPROTO="static"
UUID="d595a57e-4d0d-43f4-a289-1f9dd2233f31"
ONBOOT="yes"
IPADDR=192.168.100.80
NETMSK=255.255.255.0
GATEWAY=192.168.100.2
DNS1=192.168.100.80
[root@localhost network-scripts]#
[root@localhost network-scripts]# cat ifcfg-ens37
# Generated by parse-kickstart
DEVICE="ens37"
IPV6INIT="yes"
BOOTPROTO="static"
ONBOOT="yes"
IPADDR=192.168.100.110
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
DNS1=192.168.100.110
[root@localhost network-scripts]#
虚拟主机基于域名
Yum install -y httpd bind
[root@localhost ~]# vi /etc/named.conf
[root@localhost named]# cp -p named.localhost one.com.zone
[root@localhost named]# vi one.com.zone
[root@localhost named]# cp -p one.com.zone two.com.zone
[root@localhost conf]# pwd
/etc/httpd/conf
[root@localhost conf]# mkdir extra
[root@localhost conf]# vim vhost.conf
<VirtualHost *:80> '//针对本服务器所有IP地址 80端口'
DocumentRoot "/var/www/html/one" //站点目录
serverName www.one.com //服务网页域名
ErrorLog "logs/www.one.com.error_log" //错误日志
CustomLog "logs/www.one.com.access_log" common //访问日志
<Directory "/var/www/html">
require all granted // 设置网站的访问权限, 允许访问
<Directory "/var/www/html">
require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/www/html/two"
serverName www.two.com
ErrorLog "logs/www.two.com.error_log"
CustomLog "logs/www.two.com.access_log" common
<Directory "/var/www/html">
require all granted
</Directory>
</VirtualHost>
[root@localhost named]# cd /var/www/html/
[root@localhost html]# ls
one two
[root@localhost one]# cp -p /var/named/named.localhost index.html
[root@localhost two]# cp -p /var/named/named.localhost index.html
vi /etc/httpd/conf/httpd.conf
------新增two02 配置,端口8080
vi /etc/httpd/conf/extra/vhost.conf
<VirtualHost *:80>
DocumentRoot "/var/www/html/one"
serverName www.one.com
ErrorLog "logs/www.one.com.error_log"
CustomLog "logs/www.one.com.access_log" common
<Directory "/var/www/html">
require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/www/html/two"
serverName www.two.com
ErrorLog "logs/www.two.com.error_log"
CustomLog "logs/www.two.com.access_log" common
<Directory "/var/www/html">
require all granted
</Directory>
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot "/var/www/html/two"
serverName www.two.com
ErrorLog "logs/www.two02.com.error_log"
CustomLog "logs/www.two02.com.access_log" common
<Directory "/var/www/html">
require all granted
</Directory>
</VirtualHost>
[root@localhost one]# cd /var/www
[root@localhost www]# cd html/
[root@localhost html]# mkdir two02
[root@localhost html]# cp -p /var/www/html/one/index.html two02/
[root@localhost html]# cd two02/
[root@localhost two02]# ls
index.html
[root@localhost two02]# vi index.htm
[root@localhost two02]# vi /etc/httpd/conf/httpd.conf
[root@localhost two02]# netstat -ntap | grep httpd
tcp 0 0 192.168.100.80:8080 0.0.0.0:* LISTEN 80800/httpd
tcp 0 0 192.168.100.80:80 0.0.0.0:* LISTEN 80800/httpd
新增一台网卡对应one02
[root@localhost one02]# vi /etc/httpd/conf/extra/vhost.conf
<VirtualHost 192.168.100.80:80>
DocumentRoot "/var/www/html/one"
ErrorLog "logs/www.one.com.error_log"
CustomLog "logs/www.one.com.access_log" common
<Directory "/var/www/html">
require all granted
</Directory>
</VirtualHost>
<VirtualHost 192.168.100.110:80>
DocumentRoot "/var/www/html/one02"
ErrorLog "logs/www.one02.com.error_log"
CustomLog "logs/www.one02.com.access_log" common
<Directory "/var/www/html">
require all granted
</Directory>
</VirtualHost>
[root@localhost html]# mkdir one02
[root@localhost html]# cp -p /var/www/html/one/index.html one02/
[root@localhost html]# cd one02/
[root@localhost one02]# ls
index.html
[root@localhost one02]# vi index.html
vi httpd.conf
[root@localhost one02]# netstat -natp | grep httpd
tcp 0 0 192.168.100.110:80 0.0.0.0:* LISTEN 81323/httpd
tcp 0 0 192.168.100.80:80 0.0.0.0:* LISTEN 81323/httpd
Apache HTTP Server 之所以受到众多企业的青睐,得益于其代码开源,跨平台,功能模块化,可灵活定制等诸多优点,其不仅性能稳定,在安全性方面的表现也十分出色
一:Apache配置详解
HTTP协议是基于TCP协议之上的,在进行HTTP连接之前,要先进行TCP连接,每个TCP连接都要进行三次握手与四次挥手。建立与关闭连接对于HTTP协议而言会消耗很多的内存与CPU资源。
解决办法是HTTP连接保持。就是尽量地保持客户端的连接,通过一个TCP连接传送多个HTTP请求响应,对于客户端可以提高50%以上的响应时间,对于服务器可以降低建立与关闭连接时的资源消耗。
Apache连接保持相关参数
KeepAlive
是否打开连接保持,OFF关闭,ON打开
KeepAliveTimeout
一次连接多次请求之间的最大间隔时间,两次请求超过该时间连接断开
MaxKeepAliveRequests
一次连接能够传输的最大请求数量
作用
控制对网站资源的访问
为特定的网站目录添加访问授权
常用访问控制方式
客户机地址限制
用户授权限制
使用Require配置项实现访问控制,按先后顺序限制
可用,,,配置段中
Require配置项的常见语法
Require all granted
Require all denied
Require local
Require [not] host <主机名或域名列表>
Require [not] ip <IP地址或网段列表>
'//使用not禁止访问时要将其置于 容器中,并在容器中指定相对应的限制策略'
创建用户认证数据库
命令基本格式
'//htpasswd命令是httpd自带的'
htpasswd -c /etc/httpd/conf/abc webadmin '//为用户webadmin创建密码文件'
New password:'//输入密码'
Re-type new password:'//重复输入密码'
cat /etc/httpd/conf/abc
webadmin:加密密码
用户授权限制–添加用户授权配置
'//配置基本格式'
<Directory "/var/www/html">
AuthName "DocumentRoot" '//受保护的领域名称'
AuthType Basic '//认证类型'
AuthUserFile /etc/httpd/conf/qwe '//用户认证账号文件'
Require valid-user '//要求通过认证才能访问'
</Directory>
[root@localhost one02]# htpasswd -c /etc/httpd/conf/pwd lisi
New password:
Re-type new password:
Adding password for user lisi
### 3.4.4 创建用户wangwu 并测试登录
[root@localhost ~]# htpasswd /etc/httpd/conf/pwd wangwu
New password:
Re-type new password:
Adding password for user wangwu
[root@localhost ~]#
vi httpd
也可以放在HTTP子配置文件中