Apache的虚拟主机配置

本文详细介绍如何使用Apache服务器的mod_vhost_alias及mod_rewrite模块配置虚拟主机。包括动态虚拟主机配置方法,如通过Host:头获取服务器名称、设置日志格式等;基于IP地址的虚拟主机配置,例如从IP地址反解析获取服务器名字并包含到文件路径中;以及使用独立的虚拟主机配置文件vhost.map实现虚拟主机的方法。

1.2 虚拟主机配置

首先用“记事本”程序打开“httpd.conf”配置文件。此文件存放在Apache服务器安装路径下的“conf”文件夹内。

一、使用 mod_vhost_alias

1.简单的动态虚拟主机

(1)从 Host: 头中取得服务器名字 Server Name

UseCanonicalName Off

(2)这里的日志格式,可以在将来通过第一个参数域来分隔不同的虚拟主机的日志

LogFormat "%V %h %l %u %t "%r" %s %b" vcommon
CustomLog logs/access_log vcommon

(3)在返回请求的文件名的路径中包含进服务器名字: server name

VirtualDocumentRoot /www/hosts/%0/docs
VirtualScriptAlias /www/hosts/%0/cgi-bin

2.更为有效的基于 IP 地址的虚拟主机

(1)从 IP 地址反解析得到服务器名字(server name)

UseCanonicalName DNS

(2)在日志中包含 IP 地址,便于后续分发

LogFormat "%A %h %l %u %t "%r" %s %b" vcommon
CustomLog logs/access_log vcommon

(3)在文件路径中包含 IP 地址

VirtualDocumentRootIP /www/hosts/%0/docs
VirtualScriptAliasIP /www/hosts/%0/cgi-bin

二、使用 mod_rewrite

1. 使用 mod_rewrite 实现简单的动态虚拟主机

(1)从 Host: 头获取服务器名字

UseCanonicalName Off

(2)可分割的日志

LogFormat "%i %h %l %u %t "%r" %s %b" vcommon
CustomLog logs/access_log vcommon
<Directory /www/hosts>
ExecCGI is needed here because we can't force
CGI execution in the way that ScriptAlias does
Options FollowSymLinks ExecCGI
</Directory>

(3)接下来是关键部分

RewriteEngine On
a ServerName derived from a Host: header may be any case at all RewriteMap lowercase int:tolower

首先处理普通文档:

允许变名 /icons/ 起作用 - 其他变名类同
RewriteCond % !^/icons/
允许 CGIs
RewriteCond % !^/cgi-bin/
开始“变戏法”
RewriteRule ^/(.*)$ /www/hosts/$}/docs/

现在处理 CGIs - 我们需要强制使用一个 MIME 类型

RewriteCond % ^/cgi-bin/
RewriteRule ^/(.*)$ /www/hosts/$}/cgi-bin/ [T=application/x-httpd-  cgi]


2.使用独立的虚拟主机配置文件 vhost.map

(1)vhost.map 文件包含了类似下面的内容:

www.customer-1.com /www/customers/1
www.customer-2.com /www/customers/2
...
www.customer-N.com /www/customers/N

(2)http.conf 包含了:

RewriteEngine on
RewriteMap lowercase int:tolower

(3)定义映像文件

RewriteMap vhost txt:/www/conf/vhost.map

(4)和上面的例子一样,处理变名

RewriteCond % !^/icons/
RewriteCond % !^/cgi-bin/
RewriteCond $} ^(.+)$

(5)这里做基于文件的重新映射

RewriteCond $ ^(/.*)$
RewriteRule ^/(.*)$ %1/docs/
RewriteCond % ^/cgi-bin/
RewriteCond $} ^(.+)$
RewriteCond $ ^(/.*)$
RewriteRule ^/(.*)$ %1/cgi-bin/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值