您的位置:首页 > 运维架构 > Apache

Apache 虚拟主机

2016-03-13 17:45 253 查看
虚拟主机配置

虚拟主机: 在一台物理机上,运行或者是维护着多个web站点,用户通过使用不同的IP地址或者是主机名来访问,通过虚拟主机,跨域提供更多的web站点,但是不需要提供额外的服务器。

当Apache启动的时候,如果遇到NameVirtualHost指令,会为NameVirtualHost所指定的IP地址建立一个虚拟主机的地址表,而不是去监听这个地址,然后在遇到虚拟主机容器<VirtualHost>会判断该地址是否

与之前建立的虚拟主机地址表相同,如果相同则为该地址添加啊虚拟主机,这样每一个NameVirtualHost指令中指定的IP地址都会有一个完整的虚拟主机列表

一:基于名字的虚拟主机配置

基于名字的虚拟主机是能根据客户端提交的HTTP头中标识主机名的部分决定的,因此多个虚拟主机可以公用同一个IP地址 来同时开启多个虚拟主机服务,虽然可以解决IP不足的问题,但是需要DNS,在DNS中增加

与虚拟主机名相对应的IP 地址;而且基于名字的虚拟主机也无法成为SSL服务器

<VirtualHost *:80>

    ServerAdmin webmaster@dummy-host.example.com

    DocumentRoot "/usr/local/apache/docs/dummy-host.example.com"

    ServerName dummy-host.example.com

    ServerAlias www.dummy-host.example.com

    ErrorLog "logs/dummy-host.example.com-error_log"

    CustomLog "logs/dummy-host.example.com-access_log" common

</VirtualHost>

二:基于IP的虚拟主机配置

可以使得那些不支持HTTP/1.1的浏览器能够正常访问,二是能够支持SSL.(因为需要独立的IP地址和主机名进行关联,但是基于主机名的虚拟主机显然不能做到这一点)

1 建立虚拟网络接口/别名

服务器上的物理接口数量通常都是有限的,更多使用虚拟的网络接口来处理虚拟主机,这也被称为建立网络别名。

ifconfig eth0:0 192.168.1.50 netamsk 255.255.255.0 up

route add -host 192.168.1.50 eth0:0

2 配置虚拟主机

<VirtualHost 192.168.1.50:80>

    ServerName www.nicky.com
DocumentRoot /var/nicky/www

</VirtualHost>

三:动态虚拟主机

使用vhost_alias_module 模块建立动态虚拟主机,通常情况下,基于名字和基于IP地址的虚拟主机应用可以满足大多数人的需求,但是对于那些 服务器集群或ISP提供者来说一个服务器提供几百或者上千web站

点都是很正常的,这些虚拟主机通常都是基于名字,每一个主机有自己的主机和DNS记录,对于动态虚拟主机,Apache提供了vhost_alias_module模块来满足需求,通过它你可以瞬间建立成百上千的虚拟主机

四:为虚拟主机添加日志,只需要添加ErrorLog和CustomLog

<VirtualHost 192.168.1.50:80>

    ServerName www.nicky.com
DocumentRoot /var/nicky/www
ErrorLog /var/log/apache/error_log_www.nicky.com
CustomLog /var/log/apache/access_log_www.nicky.com

</VirtualHost>

五:合并虚拟主机日志

httpd.conf 设置 CustomLog "%h %l %u %t \"%r\" %>s  %b" vhost

六:虚拟主机支持SSL

1 添加443端口

2 <VirtualHost 192.168.1.50:443>

    ServerName www.nicky.com
DocumentRoot /var/nicky/www
SSLEngine on
SSLCertificateFile /var/www/ssl/nicky.crt
SSKCertificateKeyFile /var/www/ssl/nicky.key

</VirtualHost>

七:使用虚拟主机的建议

1 每一个虚拟主机最好都能指定SeverName,而不是去依赖DNS的解释

2 每一个<VirtualHost>容器中都能指定IP地址和监听地址

3 对于每个打算基于名字的虚拟主机的IP地址,只能使用一次NameVirtualHost

4 对于提供很多虚拟主机服务的apache,最好替换他的默认主机
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: