<-
Apache > HTTP Server > �ĵ� > �汾2.2 > ��������
���� ��л | �������� | ��ƪ���ߣ��𲽹� | ��ҳ�����£�2006��1��18�� | ��ȡ���°汾

���������������Ķ�̬����

���ĵ��������ʹ��Apache��Ч�ļ������������������

top

����

�����������ļ�httpd.conf�а���������������<VirtualHost>�Σ��������е����ݶ�������ͬ�Ļ�����Ӧ�û�����������ļ�������Ȥ�����磺

NameVirtualHost 111.22.33.44
<VirtualHost 111.22.33.44>
ServerName www.customer-1.com
DocumentRoot /www/hosts/www.customer-1.com/docs
ScriptAlias /cgi-bin/ /www/hosts/www.customer-1.com/cgi-bin
</VirtualHost>
<VirtualHost 111.22.33.44>
ServerName www.customer-2.com
DocumentRoot /www/hosts/www.customer-2.com/docs
ScriptAlias /cgi-bin/ /www/hosts/www.customer-2.com/cgi-bin
</VirtualHost>
# �� �� �� ������
<VirtualHost 111.22.33.44>
ServerName www.customer-N.com
DocumentRoot /www/hosts/www.customer-N.com/docs
ScriptAlias /cgi-bin/ /www/hosts/www.customer-N.com/cgi-bin
</VirtualHost>

�������˼�����ö�̬�Ļ�����ʵ��������Щ��̬��<VirtualHost>���öΡ�������������ŵ㣺

  1. �����ļ���С��ʹ��Apache���Ը����������ͬʱ���ĸ��ٵ��ڴ档
  2. ���һ������������Ӧ��ֻ�Ǽ򵥵����ļ�ϵͳ�д������ʵ�Ŀ¼���Լ�������ص�DNS��Ϣ����������������Apache ��

��Ҫ��ȱ�������޷����ÿ����������ʹ�ò�ͬ����־�ļ���Ȼ�����������������д������������ķ������ϼ�¼��ͬ����־�ļ��Ļ������п��ܻ�ﵽ����ϵͳ�����������ļ������������������õİ취�ǰ���־д���ܵ����������ȳ���ջ�������������Ľ������ּ����õ�����־��Ϣ(ͬʱҲ������һЩ��ʷ��¼��ͳ�Ƶȵ�)��

top

����

һ�����������������������壺һ��������IP��ַ������һ����HTTP��"Host:"����ͷ����̬�������������ļ������ǻ����Զ�����Ҫ���ص��ļ�·���в��������Ϣ���뷨ʵ�ֵġ�ʹ��mod_vhost_alias���Ժ����׵�ʵ�֣���������Apache�汾����1.3.6 ���������ʹ��mod_rewrite ��������Ĭ������¶������ã�Ҫʹ�����ǣ����������úͱ���Apache�Ľ׶����á�

������Ҫ���ܶ�"αװ"������ʹ��̬������������������ͨ����������Ҫ��һ����Apacheʹ������������(ServerName)������������(self-referential)URL����Ϣ��������ServerNameָ�������õģ����ҿ���ͨ����������SERVER_NAME���ݸ�CGI�ű�������ʱʵ��ʹ�õ�ֵ����UseCanonicalNameָ������������Ƶġ��� UseCanonicalName Off ʱ������������(ServerName)ȡ�������е�"Host:"ͷ���� UseCanonicalName DNS ʱ����ͨ��DNS����������������IP��ַ�õ�����������ǰ�������ǻ������ƵĶ�̬�������������ڳ��û���IP��ַ���������������Apache�޷��ж��������������������û��"Host:"ͷ����DNS����ʧ�ܣ�����������£�Apache��ʹ������ServerNameʱ����д����������

��һ����Ҫ"αװ"���������ĵ���Ŀ¼(��DocumentRoot���ò�����ͨ��DOCUMENT_ROOT��������ΪCGI�ű���ʹ��)����ͨ�������÷�ʽ�£���Щ������Ϣ�ɺ���(core)ģ���ڽ�URIӳ�䵽�ļ�ϵͳ��ʱ��ʹ�ã��������ʹ�ö�̬�����������ã���Щ��Ϣ��������һ��ʹ�ò�ͬ�ں���(core)ģ�齫URIӳ�䵽�ļ�ϵͳ�ķ�ʽ��ģ��(mod_vhost_alias��mod_rewrite)ʹ�á�������ģ�鶼����������DOCUMENT_ROOT�����������������CGI��SSI����ʹ����DOCUMENT_ROOT������������ô���õ������ֵ��

top

�򵥵Ķ�̬��������

����httpd.conf�ļ��У���ɺ����������������ᵽ����������һ��Ч�������÷����������������mod_vhost_aliasģ�飺

# ��"Host:"ͷ��ȡ��������
UseCanonicalName Off

# ������־��ʽ���Դӵ�һ���ֶ�����ȡ��������
LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
CustomLog logs/access_log vcommon

# �ڷ���������ļ���·���а���������
VirtualDocumentRoot /www/hosts/%0/docs
VirtualScriptAlias /www/hosts/%0/cgi-bin

�� UseCanonicalName Off �����ø�Ϊ UseCanonicalName DNS ����ʵ�ֻ���IP��ַ�����������������ļ�·������Ҫ����ķ���������ͨ������������IP��ַ�����õ���

top

һ��ʵ�ʵĸ�����ҳϵͳ

����������ϵͳ����һ������������ΪISP�ĸ�����ҳ������������ʹ������΢���ӵķ�������������(ServerName)����ȡ���ַ����������뵽�ļ�·���С������������www.user.isp.com���ĵ�����/home/user/�ж�λ������������������ʹ�õ���cgi-binĿ¼��

# ����֮ǰ��׼�����������һ����Ȼ�����ļ�·���а���������
VirtualDocumentRoot /www/hosts/%2/docs

# ����cgi-binĿ¼
ScriptAlias /cgi-bin/ /www/std-cgi/

�����ӵĹ���VirtualDocumentRoot�����ã����Բ���mod_vhost_alias�ĵ���

top

��ͬһ���������ϼ���������������ϵͳ

�����ӵ����ã�Ӧ��ʹ��Apache��<VirtualHost>������������������������õ����������磬�������һ��IP��ַ����������ҳ�ͻ�ʹ�ã�ͬʱ������������ṩ����ҵ�ͻ�ʹ�á���Ȼ�ģ�������ͨ������<VirtualHost>��ϵ�һ��

UseCanonicalName Off

LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon

<Directory /www/commercial>
Options FollowSymLinks
AllowOverride All
</Directory>

<Directory /www/homepages>
Options FollowSymLinks
AllowOverride None
</Directory>

<VirtualHost 111.22.33.44>
ServerName www.commercial.isp.com

CustomLog logs/access_log.commercial vcommon

VirtualDocumentRoot /www/commercial/%0/docs
VirtualScriptAlias /www/commercial/%0/cgi-bin
</VirtualHost>

<VirtualHost 111.22.33.45>
ServerName www.homepages.isp.com

CustomLog logs/access_log.homepages vcommon

VirtualDocumentRoot /www/homepages/%0/docs
ScriptAlias /cgi-bin/ /www/std-cgi/
</VirtualHost>

top

��Ϊ��Ч�Ļ���IP��ַ����������

����һ��������˵����תΪ����IP��ַ�������������ú����������������ҵ��ǣ���������������Ч����Ϊ��������ÿ�δ�������ʱ����Ҫ��ѯDNS��ͨ�����ļ�ϵͳ�а���IP��ַ���������Ա������������⡣����һ������ȥ�˺��������Ĺ���������־��¼��Ҳһ��������IP�����벻ͬ��־��Apache������Ϊ��ȷ��������(ServerName)��ȥ��DNS��ѯ��

# ��IP��ַ�������õ�������
UseCanonicalName DNS

# ����־�а���IP��ַ�������Ժ�ּ�
LogFormat "%A %h %l %u %t \"%r\" %s %b" vcommon
CustomLog logs/access_log vcommon

# ���ļ�·���а���IP��ַ
VirtualDocumentRootIP /www/hosts/%0/docs
VirtualScriptAliasIP /www/hosts/%0/cgi-bin

top

ʹ���ϰ汾��Apache

��������ӻ���mod_vhost_alias ���������ڰ汾1.3.6֮��ų��ֵġ������İ汾�Ƚ��ϣ�����ͨ��ʹ��mod_rewrite���ﵽ��ͬ��Ŀ�ģ�������ʾ����ֻ���ǻ���"Host:"ͷ��ʽ������������

���⻹��ע����־��������⡣Apache1.3.6�ǵ�һ��֧��"%V"��־��ʽָ��İ汾���ڰ汾1.3.0-1.3.3�У�"%v"ѡ������"%V"һ�������飻���ڰ汾1.3.4��û�еȼ�ָ������е���Щ�汾�У�ָ��UseCanonicalName���Գ�����.htaccess�ļ��У�����ζ�ſͻ������ÿ��ܻᵼ����־��¼���ҡ�������õ�������ʹ��"%{Host}i"ָ�������ֱ�Ӽ�¼"Host:"ͷ��ע�⣬����������ĩβ����":port"����ʹ��"%V"�򲻻�������

top

ʹ��mod_rewriteʵ�ּ򵥵Ķ�̬��������

���������ժ��httpd.conf ��Ч����ͬ����һ�������е������ǰ�벿�ֺ���������Ӵ������ƣ�ֻ��Ϊ��������mod_rewrite�����ʵ��޸ģ���벿������mod_rewrite����ʵ�ʵĹ�����

��Щ�ر�ĵط���Ҫע�⣺Ĭ������£�mod_rewrite����������URIת��ģ��(mod_alias��)֮ǰ���У��������ʹ����Щģ��Ļ���mod_rewrite��������Ӧ�ĵ�����ͬʱ�����ǻ�ҪΪÿ����̬����������ЩϷ����ʹ֮��Ч��ScriptAlias

# ��"Host:"ͷ��ȡ������
UseCanonicalName Off

# �ɷּ����־
LogFormat "%{Host}i %h %l %u %t \"%r\" %s %b" vcommon
CustomLog logs/access_log vcommon

<Directory /www/hosts>
# ������ҪExecCGI ����Ϊ���Dz���ǿ��CGI����ScriptAlias��ͬ�ķ�ʽִ��
Options FollowSymLinks ExecCGI
</Directory>

# �������ǹؼ�����

RewriteEngine On

# ����"Host:"ͷ��ServerName �����ܴ�Сд����
RewriteMap lowercase int:tolower

## ���ȴ�����ͨ�ĵ�
# �������/icons/�����ã�����������ͬ
RewriteCond %{REQUEST_URI} !^/icons/
# ����CGI
RewriteCond %{REQUEST_URI} !^/cgi-bin/
# ��ʼ"��Ϸ��"
RewriteRule ^/(.*)$ /www/hosts/${lowercase:%{SERVER_NAME}}/docs/$1

## ���ڴ���CGI(������Ҫǿ��ʹ��һ��MIME����)
RewriteCond %{REQUEST_URI} ^/cgi-bin/
RewriteRule ^/(.*)$ /www/hosts/${lowercase:%{SERVER_NAME}}/cgi-bin/$1 [T=application/x-httpd-cgi]

# ok �ˣ�

top

ʹ��mod_rewrite�ĸ�����ҳϵͳ

�����������ɺ��ڶ���������ͬ�Ĺ�����

RewriteEngine on

RewriteMap lowercase int:tolower

# ����CGI����
RewriteCond %{REQUEST_URI} !^/cgi-bin/

# ���hostname��ȷ���֮�����ʹRewriteRule������
RewriteCond ${lowercase:%{SERVER_NAME}} ^www\.[a-z-]+\.isp\.com$

# �����������������ӵ�URI�Ŀ�ͷ
# [C]����������д�Ľ��������һ��rewrite������ʹ��
RewriteRule ^(.+) ${lowercase:%{SERVER_NAME}}$1 [C]

# ���ڴ���ʵ�ʵ��ļ���
RewriteRule ^www\.([a-z-]+)\.isp\.com/(.*) /home/$1/$2

# ����ȫ��CGIĿ¼
ScriptAlias /cgi-bin/ /www/std-cgi/

top

ʹ�ö������������������ļ�

�����IJ���������mod_rewrite�ĸ߼����ԣ��ڶ������������������ļ���ת������˿��Ը�Ϊ������Ҫ��Ϊ���ӵ����á�

vhost.map�ļ�������������������ݣ�

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

http.conf�����ˣ�

RewriteEngine on

RewriteMap lowercase int:tolower

# ����ӳ���ļ�
RewriteMap vhost txt:/www/conf/vhost.map

# �����������һ�����������
RewriteCond %{REQUEST_URI} !^/icons/
RewriteCond %{REQUEST_URI} !^/cgi-bin/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
# �����������ļ�������ӳ��
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/docs/$1

RewriteCond %{REQUEST_URI} ^/cgi-bin/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/cgi-bin/$1