Apache HTTP Server �汾2.2
���ĵ���ͼ����һЩ��������������ʱ�����ʼ������⡣��Щʾ������չʾ�������һ����������ͨ�����������Ļ�������IP������������������webվ�㡣��һ�ݹ��������һ����������������ڶ����������վ���˵���ĵ�Ҳ�ܿ�ͻ������
���ķ�������ֻһ��IP��ַ������DNS���кܶ�����(CNAMES)ӳ�䵽�����������������Ҫ���������������www.example.com
��www.example.org
����վ�㡣
������Apache�����������д���һ�����������������Զ�������DNS�ж�����������Ӧ���¡��������Լ���DNS�����������ָ������IP��ַ���������������������webվ��ġ�������������hosts
�ļ��������һ��Ŀ�����в��ԣ������ַ�������������Щ����Щhosts
�ļ��Ļ�����ʹ�á�
# ȷ��Apache�ڼ���80�˿�
Listen 80
# Ϊ��������������IP��ַ�ϼ���
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /www/example1
ServerName www.example.com
# ������������������ָ��
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/example2
ServerName www.example.org
# ������������������ָ��
</VirtualHost>
��Ϊ�Ǻ�ƥ������IP��ַ���������������������κ�������Ϊwww.example.com
���ȳ����������ļ��У�������ӵ��������ȼ���������Ϊ��Ĭ������������������ζ�����һ����������ij��ServerName
ָ����ƥ�䣬�������ɵ�һ��<VirtualHost>
�����ŷ���
�����Ը�⣬��������ȷ����IP��ַ��ȡ��"*
"������������£�VirtualHost
�IJ���������NameVirtualHost
�IJ��������
NameVirtualHost 172.20.30.40
<VirtualHost 172.20.30.40>
# ���� ...
Ȼ����������IP��ַ��ȷ����ʱ��ʹ��"*
"�Ǻܷ���ģ�����˵������ISP�������õ��Ƕ�̬IP��ַ��������ʹ����ij�ֶ�̬��������ϵͳʱ����Ϊ"*
"ƥ���κ�IP��ַ����������������£�����IP��ַ��α仯����������Ҫ����������á�
�������þ������ھ�����������ʹ�û�����������������ʱ��Ҫ�õ��ġ���ʵ�ϣ�����һ����������������ò����������⣺����Ϊ��ͬ��IP��ַ���Ƕ˿��ṩ��ͬ�����ݡ�
���������۵��κμ����������ƹ㵽ʹ������������IP��ַ��
������������IP��ַ��һ��(172.20.30.40
)������������server.domain.com
������һ��(172.20.30.50
)���ڹ���������������������
Listen 80
# "��"�����������ڣ�172.20.30.40
ServerName server.domain.com
DocumentRoot /www/mainserver
# ��������һ��IP��ַ
NameVirtualHost 172.20.30.50
<VirtualHost 172.20.30.50>
DocumentRoot /www/example1
ServerName www.example.com
# ������������������ָ�� ...
</VirtualHost>
<VirtualHost 172.20.30.50>
DocumentRoot /www/example2
ServerName www.example.org
# ������������������ָ�� ...
</VirtualHost>
�κβ������172.20.30.50
�������������������ŷ������ύ��172.20.30.50
ȴû����������û��"Host:
"ͷ����������www.example.com
�ŷ���
������������IP��ַ(192.168.1.1
��172.20.30.40
)���������λ���ڲ�(������)������ⲿ(������)֮�䡣���ⲿ������server.example.com
ָ���ⲿ��ַ(172.20.30.40
)�������ڲ���ָ���ڲ���ַ(192.168.1.1
)��
����������Ϊ�����ڲ����ⲿ�������ṩͬ�������ݣ���ֻ��Ҫһ��<VirtualHost>
���öξͿ����ˡ�
NameVirtualHost 192.168.1.1
NameVirtualHost 172.20.30.40
<VirtualHost 192.168.1.1 172.20.30.40>
DocumentRoot /www/server1
ServerName server.example.com
ServerAlias server
</VirtualHost>
���ڣ��Ӳ�ͬ�������ύ��������ͬһ��<VirtualHost>
�����ŷ���
�������У�������ʹ��server
�������������server.example.com
���ȫ����
������һ�������������������������"*
"����������IP��ַ�������Ϳ��Զ����еĵ�ַ��������ͬ�������ˡ�
���������ͬһ��IP�IJ�ͬ�˿��ŷ���������������Խ�����NameVirtualHost
ָ���ж���˿ڵķ������ﵽ���Ŀ�ġ��������ʹ�ò���"name:port
"��<VirtualHost name:port>
����ֱ����Listen
ָ��������ý�����Ч��
Listen 80
Listen 8080
NameVirtualHost 172.20.30.40:80
NameVirtualHost 172.20.30.40:8080
<VirtualHost 172.20.30.40:80>
ServerName www.example.com
DocumentRoot /www/domain-80
</VirtualHost>
<VirtualHost 172.20.30.40:8080>
ServerName www.example.com
DocumentRoot /www/domain-8080
</VirtualHost>
<VirtualHost 172.20.30.40:80>
ServerName www.example.org
DocumentRoot /www/otherdomain-80
</VirtualHost>
<VirtualHost 172.20.30.40:8080>
ServerName www.example.org
DocumentRoot /www/otherdomain-8080
</VirtualHost>
һ��������IP��ַ(172.20.30.40
��172.20.30.50
)�ֱ��Ӧ����www.example.com
��www.example.org
���������£�
Listen 80
<VirtualHost 172.20.30.40>
DocumentRoot /www/example1
ServerName www.example.com
</VirtualHost>
<VirtualHost 172.20.30.50>
DocumentRoot /www/example2
ServerName www.example.org
</VirtualHost>
�������������������ô��û�г�������һ��<VirtualHost>
���е�����(���磬��localhost
������)�����������������ŷ���
������ķ�����������IP��ַ(172.20.30.40
��172.20.30.50
)�ֱ��Ӧ����www.example.com
��www.example.org
����ÿ������������ϣ����80�˿ں�8080�˿ڷ���������վ���������������ã�
Listen 172.20.30.40:80
Listen 172.20.30.40:8080
Listen 172.20.30.50:80
Listen 172.20.30.50:8080
<VirtualHost 172.20.30.40:80>
DocumentRoot /www/example1-80
ServerName www.example.com
</VirtualHost>
<VirtualHost 172.20.30.40:8080>
DocumentRoot /www/example1-8080
ServerName www.example.com
</VirtualHost>
<VirtualHost 172.20.30.50:80>
DocumentRoot /www/example2-80
ServerName www.example.org
</VirtualHost>
<VirtualHost 172.20.30.50:8080>
DocumentRoot /www/example2-8080
ServerName www.example.org
</VirtualHost>
������һЩ��ַ�����û�������������������������һЩ��ַ�����û���IP������������
Listen 80
NameVirtualHost 172.20.30.40
<VirtualHost 172.20.30.40>
DocumentRoot /www/example1
ServerName www.example.com
</VirtualHost>
<VirtualHost 172.20.30.40>
DocumentRoot /www/example2
ServerName www.example.org
</VirtualHost>
<VirtualHost 172.20.30.40>
DocumentRoot /www/example3
ServerName www.example3.net
</VirtualHost>
# IP-based
<VirtualHost 172.20.30.50>
DocumentRoot /www/example4
ServerName www.example4.edu
</VirtualHost>
<VirtualHost 172.20.30.60>
DocumentRoot /www/example5
ServerName www.example5.gov
</VirtualHost>
<Virtual_host>
��mod_proxy
ģ��һ��ʹ���������������һ��ǰ�˻�������һ�����������������ϵ�����������������ʾ���У���192.168.111.2
������������һ��ͬ����������������������һ��ͬһ̨�����ϴ����˶����������ProxyPreserveHost On
ָ����ȷ��ָ����������˳��ͨ������
<VirtualHost *:*>
ProxyPreserveHost On
ProxyPass / http://192.168.111.2
ProxyPassReverse / http://192.168.111.2/
ServerName hostname.example.com
</VirtualHost>
_default_
"��������_default_
"���������������ÿ��Բ�������ָ��ûָ����IP��ַ�Ͷ˿ڵ������磺һ��û���κ���������ʹ�õĵ�ַ/�˿ڶԡ�
<VirtualHost _default_:*>
DocumentRoot /www/default
</VirtualHost>
����һ��ʹ��ͨ����˿ڵ�Ĭ����������������Ч�ķ�ֹ���������������ա�
���һ����ַ/�˿ڶ��Ѿ���һ��������������������ʹ�ã���ô"_default_
"�������������ᴦ���������ַ/�˿ڶԵ��������һ��"Host:
"����ͷ�а���δ֪��Ϣ�����߸ɴ��û�У���ô���ᱻ��һ��������������������(Ҳ�����������ļ������ȳ��ֵ�ʹ�����Ǹ���ַ/�˿ڶԵ���������)����
��������AliasMatch
��RewriteRule
����д�κ�����ʹ��ָ��һ������Ϣҳ��(��ű�)��
_default_
"�����������һ��һ�������������÷����������ܶ�˿ڶ��ڶ���"_default_
"����������������80�˿ڡ�
<VirtualHost _default_:80>
DocumentRoot /www/default80
# ...
</VirtualHost>
<VirtualHost _default_:*>
DocumentRoot /www/default
# ...
</VirtualHost>
����80�˿ڵ�"_default_
"��������(��������������ʹ��ͨ����˿ڵ���������֮ǰ)�Ჶ�����з���һ��δָ����IP��ַ�������������������������ŷ��κ�����
_default_
"���������������ֻ����80�˿��Ͻ���Ψһ��һ��"_default_
"��������������Ӧ���������ã�
<VirtualHost _default_:80>
DocumentRoot /www/default
...
</VirtualHost>
����һ��δָ����ַ��80�˿ڵ�������������������ŷ���������δ�趨��ַ�������˿ڵ������������������ŷ���
���һ������www.example.org
��������������(����������������ʾ���еĵڶ���)�õ����Լ���IP��ַ��Ϊ�˱���һЩ������������������������ֲ�ڼ��Զ�����������ϵĽ��������ǿ��Բ���һ�ֹ��ɷ�����ͬʱ�ṩ�¾�����IP��ַ�Ľ�����
�ﵽ���Ŀ�ĺܼ���Ϊ����ֻҪ�İ��µ�ַ(172.20.30.50
)����VirtualHost
ָ������ˡ�
Listen 80
ServerName www.example.com
DocumentRoot /www/example1
NameVirtualHost 172.20.30.40
<VirtualHost 172.20.30.40 172.20.30.50>
DocumentRoot /www/example2
ServerName www.example.org
# ...
</VirtualHost>
<VirtualHost 172.20.30.40>
DocumentRoot /www/example3
ServerName www.example.net
ServerAlias *.example.net
# ...
</VirtualHost>
����������������Ϳ������µ�ַ(����Ϊһ������IP����������)�;ɵ�ַ(����Ϊһ��������������������)ͬʱ���з����ˡ�
ServerPath
ָ�����������ͬһ����������������������������������������Ϊ��ƥ����ȷ�������������ͻ��˱��뷢����ȷ��"Host:
"ͷ�����ɵ�ʹ��HTTP/1.0�Ŀͻ���������������ͷ������Apache�������ͻ�����Ҫ�����ĸ���������(�����������������ŷ��������)��Ϊ�˾����ṩ���¼����ԣ����ǿ����ṩһ������������������һ��ҳ�棬��ҳ���м���ָ���������������������URLǰ�����ӡ�
NameVirtualHost 172.20.30.40
<VirtualHost 172.20.30.40>
# ����������
DocumentRoot /www/subdomain
RewriteEngine On
RewriteRule ^/.* /www/subdomain/index.html
# ...
</VirtualHost>
<VirtualHost 172.20.30.40>
DocumentRoot /www/subdomain/sub1
ServerName www.sub1.domain.tld
ServerPath /sub1/
RewriteEngine On
RewriteRule ^(/sub1/.*) /www/subdomain$1
# ...
</VirtualHost>
<VirtualHost 172.20.30.40>
DocumentRoot /www/subdomain/sub2
ServerName www.sub2.domain.tld
ServerPath /sub2/
RewriteEngine On
RewriteRule ^(/sub2/.*) /www/subdomain$1
# ...
</VirtualHost>
����ServerPath
ָ������ã����͵�http://www.sub1.domain.tld/sub1/
�������ܻ���sub1-vhost���ŷ���
����ͻ��˷�������ȷ��"Host:
"ͷ�����͵�http://www.sub1.domain.tld/
������ֻ�ᱻsub1-vhost���ŷ������û�з���"Host:
"ͷ���ͻ��˽���õ����������������͵���Ϣҳ�档
��ע�⣬���ﻹ��һ��С���⣺����ͻ���û�з���"Host:
"ͷ�����͵�http://www.sub2.domain.tld/sub1/
�������ǻᱻsub1-vhost���ŷ���
RewriteRule
ָ������ȷ����ȷ������"Host:
"ͷ�Ŀͻ��˿�������ʹ��������URL����������˵��ʹ�û�ʹ��URLǰ��