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,最好替换他的默认主机
虚拟主机: 在一台物理机上,运行或者是维护着多个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,最好替换他的默认主机
相关文章推荐
- Apache2.4和Apache2.2访问控制配置比较
- Apache 服务器配置详解
- 各种VC9 VC11版本的Apache
- 搭建PHP环境需要安装Apache服务器,遇到的一系列的问题(切记需要用管理权限进入CMD)
- Python+Apache+CGI完全配置
- 关闭Apache显示文件列表
- apache文件服务安装,脚本下载
- WAMP的Apache多域名配置
- apache 环境的搭建
- org.apache.jasper.JasperException: Unable to compile class for JSP:
- Apache Shiro 使用手冊 链接文件夹整理
- Apache和PHP的安装
- Apache Commons Configuration读取xml配置
- Apache Commons Configuration读取xml配置
- Apache solr和elastic search的比较
- org.apache.cxf.interceptor.Fault: Could not start Jetty server on port 8,888: Cannot assign requeste
- Python+Apache+CGI完全配置
- Heartbeat V1+NFS实现高可用apache
- 门户应用Apache Jetspeed 2.3.0及早期版本:远程代码执行漏洞分析
- Apache安装