|
unix 平台与NT平台使用apache server的设置相同。以下重点以unix平台为例1 O- ^1 Y$ H; `! M0 @ P/ X
说明apache server的设置。另外值得注意的是,虚拟web的成功设置,有大约
1 b. ?' W2 ?" g/ V5 ^9 B50%的工作量是在域名的注册与解析方面。所以一般先注册好域名然后再做
2 A$ Y9 W( @. z; a虚拟WEB设置。7 u: K: u q$ M, t
" m( S6 ]8 M! y' T% y
一 、IP型虚拟主机, V& I- K. | u( g% `7 F
- g( M. i, ^" v" G' j) @ |IP型虚拟主机指每一虚拟主机对应唯一的IP。可通过多个物理网卡或虚拟网口实现多IP,Solaris2.5和Windows NT都支持这种方式。
0 g7 M" w8 w' f! z# w. n1 y2 l# N8 k3 z
两种配置多虚拟主机的方法:
. v j4 P0 T+ }6 m3 o- I+ n' c# {" R/ {( e$ Y' \
1、为每一虚拟主机启动一个httpd进程。' q" d, d, G) T/ I' ]) ]
* I& |+ i; S; n1 d* R下列情况下使用此方法:7 }4 E G# M8 w1 S6 }- a
; M/ y- J G8 X* _ W, f? 需考虑安全隔离问题,如两个httpd运行于不同的User、Group、Listen、ServerRoot,两者用户除通过Web相互浏览数据,无法访问其他数据。
4 A$ M+ S' F9 m' Z* m6 r$ p( u; X, j. I
? 能提供足够内存和文件描述器。/ a- z$ z' X0 m7 G( g, {0 }+ M
( v7 |- G+ g9 J% A" h设置方法:" m" B0 a2 M. x5 ]4 i
( H1 M! T$ [: F0 R0 I/ L# Y$ O
为每一虚拟主机建立一个独立的httpd安装,在每一个安装路径的配置文件httpd.conf里,用Listen指令指定进程服务的IP,如:; n" C& Q7 L/ Y0 o$ L( t
& ~( Z( H) x+ Z% M$ H& g P
Listen 10.68.37.10:802 _- m$ U5 h2 d3 o: u$ ]) P* N# c( b
3 q2 W& d$ Z9 Q1 m T' Z* o7 K
2、为所有虚拟主机启动一个httpd进程。
. t; t; v7 _$ i0 [, ]" J4 h
) s* d8 V( _2 G: A# V9 U# v下列情况下使用此方法:
( }! z4 V" v5 _7 L( O) r; K
9 E! Y, }5 S3 x @/ b5 E? 允许在虚拟主机间共享httpd配置。
g$ V0 h! {( S3 i0 c
1 a! N2 I% s& Q2 j? 计算机服务于大量的请求,运行多个进程使服务器性能降低成为重要考虑因素。
6 V' v' }' f3 q( J
" w! C6 ^7 Q+ k2 L设置方法:
! I! c+ c6 {( `3 C5 U
3 M3 Z( ?! ]6 _. j: Y+ V5 O在配置文件httpd.conf里,用VirtualHost指令为每一虚拟主机设置ServerAdmin、ServerName、DocumentRoot、 ErrorLog、TransferLog或CustomLog,如:% E. c8 ?( Z7 O) Z" I7 e1 Q
5 H; q3 q5 t5 n5 d' D: J- G0 y- v<VirtualHost www.smallco.com> #此处建议用IP. W* B% n' a4 ^' I
ServerAdmin webmaster@mail.smallco.com1 b: s7 H2 r7 g3 t5 m! y* q j
DocumentRoot /usr/local/etc/httpd/htdocs/smallco
+ N) a2 d4 e4 q2 S) T# o3 aServerName www.smallco.com #建议此处用域名+ Q5 _" |4 H+ Z9 F: X% k4 p# z( _' B- h
ErrorLog /usr/local/etc/httpd/logs/smallco/error_log
6 @& w) W& {# f5 L. cTransferLog /usr/local/etc/httpd/logs/smallco/access_log3 ]8 O! l2 f$ L$ M$ M7 s6 M$ L& D
</VirtualHost>
e) z/ w1 l9 Q+ `1 h9 @0 ^7 v3 b+ E; o
8 u( }: q D; b" I<VirtualHost www.baygroup.org> #此处建议用IP" F7 d8 G8 v( p+ {. j) A
ServerAdmin webmaster@mail.baygroup.org
6 _- U# u/ d0 `/ d% q5 L& DDocumentRoot /groups/baygroup/www
6 L7 p6 s( u; T2 r* W. \ServerName www.baygroup.org #建议此处用域名: ~- L J* d' r3 f0 K z0 L' q
ErrorLog /groups/baygroup/logs/error_log; j d4 X+ A. b/ M V+ R+ X) U
TransferLog /groups/baygroup/logs/access_log2 J( L- K. r$ A$ r
</VirtualHost> 6 E( G9 x) ^2 N
& \2 s; u8 e: m" \) p同时要做虚拟网口或网卡的配置,在DNS也要做相应设置。 @) i+ J+ O0 U
a9 }9 `- H* E
二 、名字型虚拟主机(Apache1.3以上版本支持) N$ b- T3 h7 g5 |! Z
/ ?) c9 O2 c% u2 `7 {7 p' b" ~
IP型虚拟主机虽好,但不是最佳方案。它要求每一虚拟主机有一专用IP,在某些机器上难于实现。
2 J2 K( R3 s, X+ i( L& N: z: m" w
$ W2 A& k* w" C0 k, T7 H名字型虚拟主机是指每一虚拟主机的名字不相同,但IP一样。它的好处是不限制虚拟主机数量,配置、使用简单,不需另外的软硬件。缺点是客户端必须支持该部分协议,最近版本的浏览器都支持,某些老版本浏览器不支持。但Apache为此提供了解决方法。
& ~' J# h5 R. n' i0 w, u7 r" |' ?# y" f; E) ~* W7 j" _
设置方法:
$ W2 j/ J! S/ R# d' \
( M2 B/ b0 o4 b/ G在配置文件httpd.conf里,用NameVirtualHost指令设置虚拟主机,如:
/ h; \1 Z( Q* {% q5 C0 W& d4 J
; e% n) D; Z1 @2 ~3 vNameVirtualHost 111.22.33.44
4 y. M0 F6 P3 v) [/ ^. M- y. ~8 |
<VirtualHost 111.22.33.44> #建议此处用IP) v1 b$ Q! X5 S
ServerName www.domain.tld #建议此处用域名* q# v+ r* P, j' i( V8 w
DocumentRoot /web/domain
' n) V, R4 O6 w</VirtualHost>3 G- A( C( k: u( C0 K2 c; Y* |9 n) S' p6 U
8 B) z' I' [+ a* ], R同时,在DNS定义www.domain.tld指向111.22.33.44。3 I9 P) E N7 y
( I1 A/ E* B o* A9 }% s注意:当在NameVirtualHost指令后使用IP时,任何使用IP的URL请求都是针对虚拟主机的,主服务器从不会响应一个使用IP的URL请求。' I; f- f) J" R4 g9 U
" i( K3 d4 e% s/ E D* x5 ]
另外,有些服务器希望以多个名字被访问。例如,假设有某一IP的服务器,希望以名domain.tld、www2.domain.tld都能被访问,做法是在VirtualHost指令部分使用ServerAlias指令。如:
8 x1 N/ @! I) X$ u: ]1 A/ K7 i' f* N$ B9 L
ServerAlias domain.tld *.domain.tld
7 J) F: f- I2 S- I
?' d; Z* ?( I另附一些虚拟主机的设置实例。
/ O# o( P, G$ W8 J1 b* l1 P2 A( ~2 k2 B! ?: Y$ u/ u' O6 S0 N3 ?: z
0 d; f/ b2 m9 F) n1 ?8 Q- ]- m0 {% U0 E* }! q4 d9 d
. K& Q/ A1 p# P* j7 @0 {. f
( f' b6 S& U5 r; [2 W; d
附:虚拟主机设置实例
5 ]* A+ D4 z( Z. w6 ~, u6 a' ^) Q6 B0 Y- T9 ~
IP型的虚拟主机配置, q' ]+ h7 k* K8 \2 e
& {& f, t( N6 x9 q: FSetup 1: 服务器有两个IP,
8 y+ Y8 n! T, q/ s7 u ?3 _7 Z' K6 Z3 }% @* Q D9 ]7 i+ p
111.22.33.44 server.domain.tld- ?6 M0 K `9 O1 r+ z3 S
; o3 O5 _0 X* `9 t8 ~
111.22.33.55 www.otherdomain.tld K& r$ e: T8 |7 x0 A1 F, H" p
7 G9 K% m9 T( S- Y2 [& l" n2 p
www.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。
' d7 O# K: g. ~) A' n1 t& G+ g" T9 A; B: N; r% C2 M
服务器配置:9 q2 A/ v& U7 d3 N& j' W3 c% W. `
# s8 \: B7 a# ~1 f" b... S' g, C- G4 r( i A, B
% r. S3 l* ^: i7 A( s; N
Port 80 q2 C5 @2 O+ `1 w: I- d
) N4 n. i; [- U1 ^DocumentRoot /www/domain
- Z Y2 O1 ]+ t Y& }( L* hServerName www.domain.tld. c. E! g0 p# T+ ]9 M
<VirtualHost 111.22.33.55>
- ?/ O4 ^, X5 RDocumentRoot /www/otherdomain
. t, b6 D1 c4 ?ServerName www.otherdomain.tld- d! G8 n2 B% Y" F1 O( Q1 H$ l
...* d$ [3 Y6 N6 O- `9 f$ o
</VirtualHost>
0 e1 X D6 @+ U7 r# ?3 }: b3 \8 P" |& t3 i9 R
Setup 2: 基本同Setup1,但不设置专门的主服务器。: V \5 J& j' F. d' i$ R7 F$ Q
+ z U, J' R5 c' L: g
服务器配置:
L9 A, f% z* Z
" A& q5 V" {) o! H: P! C8 @$ {8 v...
2 a, I7 U+ h5 i7 K/ Z7 d( Y/ {5 V' g7 |) `+ i/ V1 N. r" _1 {/ }* T8 ^
Port 80" B a, }8 m1 P; F# y9 q% ~/ D
% v6 b, x/ \# u1 M# d3 tServerName server.domain.tld
/ P! A& y* i7 }. v<VirtualHost 111.22.33.44>
" n ^0 P! L$ Y4 s0 a% x$ ] }% ZDocumentRoot /www/domain
& P" n' [0 F5 qServerName www.domain.tld
( Z% ] P: l# c2 [* ?...) S! @$ i- S* ?9 j' H) H
</VirtualHost>
& W% b: p7 }( g1 d; r4 J0 q
9 g& m/ M( f/ Y0 I$ ?; F<VirtualHost 111.22.33.55>
! Q, s$ Y* h4 r& h, U' x+ V NDocumentRoot /www/otherdomain
' E# ?5 N$ k# g/ Z$ L4 b4 XServerName www.otherdomain.tld- r/ Q" l& Y9 _ t! F
...
4 G2 S0 N, M/ ~- k$ E</VirtualHost>- z, m Z& |( \( O7 T; K* a
8 _' T7 C/ Q- K0 N5 J% d
这种设置只有当URL为http://server.domain.tld时才击中主服务器 / V& `2 t$ K* |) K1 w5 c
. d: R/ F9 x* q2 o- k& b! Z4 B3 c
Setup 3: 服务器有两个IP,
1 N4 X, a: q( {! m0 K1 j9 d/ H4 y
& _/ i! p9 D! o; ~# i111.22.33.44 server.domain.tld
! U% [1 |* l/ p+ t111.22.33.55 www-cache.domain.tld
2 j' B" M9 L$ t4 t. `+ ^: l/ o8 [www.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。) M% X+ B' ]: X! g
www-cache.domain.tld是proxy-cache,端口是8080,Web服务器使用默认的80。$ J S, v. J, p
& W' q8 q& [0 R: s% `3 [, W& H服务器配置:
' Z1 j' Z* m( B n1 p8 r7 a2 H" M& }2 |) S: S
...
6 \- X, d5 h, ]5 Z( Y. ~
1 Q) d" B' E6 `/ aPort 809 L. ]* D" [2 _0 `3 R
% h+ D+ Q) b; O0 g6 g
Listen 111.22.33.44:804 F O3 }8 D) n$ ]) u# E
Listen 111.22.33.55:80801 ~& B0 l" i- e! V+ b) q
2 A1 |% W0 U7 a8 @ServerName server.domain.tld
$ l" p" S; m5 F2 J- ^5 y) f<VirtualHost 111.22.33.44:80>. H" @" x$ m! K# l1 y
DocumentRoot /www/domain
+ R% h& v( O: b/ hServerName www.domain.tld
" i& d: \) B: F...
1 `; }4 U5 S: W5 G</VirtualHost>
, x2 D/ z; h4 |9 l9 C3 @6 _$ ^5 f9 @6 f; K
<VirtualHost 111.22.33.55:8080>7 u; C5 M/ x5 N, t( V8 `
ServerName www-cache.domain.tld! W; ~/ F3 `9 h# T* E
...9 {# U3 J+ k9 e: v. K
<Directory proxy:># Q( ]' i( I8 ^: p% c! J
order deny,allow
. O9 Y9 e R5 F6 v0 f Ldeny from all
0 X; b0 Y L: v# q$ [allow from 111.22.33! C- o6 I q4 Z7 u
</Directory>; z3 c9 r, d! ]4 P
</VirtualHost>
0 a7 q/ P7 x9 b+ N# r! {7 u. o8 ~1 @" s& K8 N1 G
; T% Q& ~& W& l& Y- N/ s$ f8 j1 F9 V4 U* x3 Z+ a) ?: @: a$ O
名字型虚拟主机配置. |1 n" [9 O9 d, w
, X* h; n. I( u3 k% I9 B' O
Setup 1: 服务器有一个IP,+ E# d- H' V+ M% N7 ?
& v% P, O. M' m( j) ~ C7 g3 t# F3 X* w111.22.33.44 server.domain.tld. 7 K) H9 D- Z, }" m8 w @9 W/ [
# `! H# ^: \: i, i9 l Z L
www.domain.tld和www.sub.domain.tld是别名(CNAMEs) 。
0 c2 P& d0 |4 G# l9 T2 e2 e; X3 }& G" U
服务器配置: G) q% Q7 _1 R+ y' \/ [0 V
$ q5 p, H9 X. h( w1 i
...
6 d' ?! r8 T2 ?! f( g- }$ F/ H" B( `/ P) ?. N3 ^
Port 80" W! i& N4 E2 R5 ^3 I) Q
( y; P. _2 c- W& g$ pServerName server.domain.tld
. x9 y4 }2 z& Z& Y% \NameVirtualHost 111.22.33.44 % i/ X) U/ Q0 q! O
3 c% b8 m( x3 v! m! c8 W
<VirtualHost 111.22.33.44>
1 Z# |4 U. K: Q" X1 jDocumentRoot /www/domain; M( ]+ t# }+ d0 U8 K" l3 K! ~+ A
ServerName www.domain.tld
( f5 d7 o- H) A3 _8 w/ U$ Q...
7 r5 D+ U4 V/ u# F</VirtualHost>% i, m0 a {) @3 ~
2 c# ?# U' F, t. {3 b
<VirtualHost 111.22.33.44>. Y+ M7 ^! R* h# v
DocumentRoot /www/subdomain
0 Q, k: j# c4 a; QServerName www.sub.domain.tld; L7 [$ h: ~/ b& Z$ T1 a- ?5 F
...
. t/ H6 G$ B. A) y2 G1 E% E</VirtualHost>
2 `2 x( F4 D- P, e
7 t6 c3 c; y: w; u2 D# d l1 k( e8 [若使用IP访问服务器,由于 www.domain.tld 有最高优先级,被认为是默认服务器或第一服务器。& |+ |) Q6 @4 w* s/ d _- Z$ X5 R
- P7 N: @* l, J; j# Y
Setup 2:服务器有两个IP,
0 P% b. t A) j5 M: g: J* c
$ ^4 \, Y7 A, [2 V; Y0 C( @111.22.33.44 server1.domain.tld 用于主服务器
) S9 g0 ~/ `4 D3 p111.22.33.55 server2.domain.tld 用于虚拟主机! n3 I6 e7 |' k# I( |. \4 B0 S+ d# R0 Y
别名www.domain.tld用于主服务器,
0 D/ c6 O4 e. ?别名www.otherdomain.tld用于一个虚拟主机,+ x& q J$ w4 W! ^4 D
别名www.sub.domain.tld,*.sub.domain.tld 用于另一虚拟主机,
% `" @. j1 j, N' N+ s) z
( F( }: j3 ]/ Q, B服务器配置:
/ v* f- I7 J: p
$ w" y( R7 z/ [) ~, ?...$ R% r6 {; U5 R
R" k' j: C/ b% O4 c7 ~
Port 80, N! b8 |1 A2 V. Q- Q, Z% L! `
$ T0 D# j$ f! i) U% TServerName www.domain.tld- _2 ] C4 |/ S( Q# H8 J( g3 @
DocumentRoot /www/domain
3 o$ M' _7 @! {NameVirtualHost 111.22.33.55. k/ D* P& {4 v
<VirtualHost 111.22.33.55>
# H/ ~+ F9 x& ]6 P8 aDocumentRoot /www/otherdomain; k% }1 W2 K6 M, ^
ServerName www.otherdomain.tld
& D2 q w( N- R h: n( i4 Y! k...) Q! U8 V' y0 L R5 M& _) s
</VirtualHost>
: k# q- Q: }$ V
$ W# z2 H2 O5 Z, M8 {/ i( O<VirtualHost 111.22.33.55>
, x2 c& W2 w$ B/ J' t6 x4 @) T" PDocumentRoot /www/subdomain
$ y$ r" y# a0 B) d% S+ yServerName www.sub.domain.tld
d4 V. G% F: `+ c) [9 ZServerAlias *.sub.domain.tld5 s9 Q# E# h- h
...$ j. g: ~! K+ w9 ]$ ~1 Y6 f$ x ^
</VirtualHost>
9 O+ Y+ W) Q m Z. j% c) | o2 v
混合型(IP/名字)虚拟主机配置' K( s: v0 W9 {. `/ f4 m
! r/ v5 e9 {/ A5 YSetup:服务器有三个IP,
. Q: B8 p, O( i" x6 ]9 ]
( l& W2 O& M* n/ m! V$ g111.22.33.44 server.domain.tld 用于名字型虚拟主机
2 G+ B! k: g a" P111.22.33.55 www.otherdomain1.tld 用于IP型虚拟主机
' e, k+ N! p4 f9 P: A111.22.33.66 www.otherdomain2.tld 用于IP型虚拟主机
! q" {( @: K( c, a! A
0 N: g- f! W6 F服务器配置:
+ Q! E. e! d& [% B...8 `+ ^: m/ ?* d
1 b5 ~& C% W3 B6 g. e- Y1 Q: ?3 \
Port 80
( K) w4 ^ s `4 s# mServerName server.domain.tld
. S' J. N. I) B: P# r) k s8 ` Z0 E0 X; n+ h
NameVirtualHost 111.22.33.44/ n7 l& w- S6 u7 s
# P- x3 X% j. z
<VirtualHost 111.22.33.44>
6 F% z3 Y- S& @. _DocumentRoot /www/domain$ u% K% F x8 O3 C/ N" g
ServerName www.domain.tld
+ c M9 b ^0 u* B...8 Z L) q! z3 L+ ?, U; w
</VirtualHost>6 D; ^1 L" ^ c
6 d3 E: ^/ u2 A/ s' ~. z
<VirtualHost 111.22.33.44>
) P7 P$ G: A0 D% B+ w, Q/ x6 \DocumentRoot /www/subdomain1
4 C: \. `7 ^6 {1 `3 |' dServerName www.sub1.domain.tld* A/ c4 K9 S6 Z, N, b
...
' {# ~" H2 O& R</VirtualHost> , N0 e3 X: V1 p! X: x# w' F6 L
1 i) O6 k: Z4 r" L/ v5 {
<VirtualHost 111.22.33.44>
6 \7 @) N6 G) L8 P) w( ]7 lDocumentRoot /www/subdomain2" `& ^- X& ]- `1 O' V' L0 m: a
ServerName www.sub2.domain.tld4 E C& i: d r1 J9 h3 l+ I" m* S
...
& n7 [) m9 e" K+ V$ Y: O5 B</VirtualHost> ) y: x; J! `) ~8 P, H/ O6 ?, h; T
* s* t4 `+ ?1 X<VirtualHost 111.22.33.55>
3 N1 R& L% u' u+ P2 A4 {DocumentRoot /www/otherdomain1+ I- [# [1 Y% d5 n$ p
ServerName www.otherdomain1.tld
$ ?+ E$ e- a, Z3 D- u$ X...4 V# ^: k5 Z. B( Y
</VirtualHost> 4 M: n* f4 h, W+ A0 `: C
9 y2 N4 {5 q4 \% E<VirtualHost 111.22.33.66>/ F' Y+ o9 l6 g$ F
DocumentRoot /www/otherdomain2
1 G+ a8 I% u/ aServerName www.otherdomain2.tld$ ^6 Z E0 N9 i; u
...
' ^, F# W/ u2 v0 `</VirtualHost> - g/ {& }% e. t, p* m- b" v
9 w) G# r! C) D, l' J* Z! e; E% I; i; J m端口型虚拟主机配置# U$ Q4 H: z$ T: c, M0 M
Z2 |- `4 C5 L1 k) fSetup: 服务器有一个IP,
. |# _6 ~8 O! X6 @0 @
. F, h* X; o% H; `/ `+ z% I111.22.33.44 www.domain.tld
# V9 R# U# @8 H) Z, O) V
3 o& h( h6 l; h6 p9 |不需要另外的别名或IP,采用端口型虚拟主机即可设置一个配置有别于主服务器的虚拟主机。
! t# N: r7 }2 j8 O
: K8 ?; R$ ]5 z2 j服务器配置:
) {! h6 b+ c/ t( j( O...9 o- i: D% Z& i e/ H6 N
! P% S& H n4 ZListen 80
# \! n, ?. u. n0 f; MListen 8080
% l1 w& n$ {' z" E3 u0 G: D9 \0 k5 J6 H+ @9 _
ServerName www.domain.tld# D3 x+ U" f. i6 Q
DocumentRoot /www/domain
- ^" u/ ]! w+ U! H
Y- |( H5 l- H$ k) h9 m2 _: {! k$ Q<VirtualHost 111.22.33.44:8080>. o# ]* A' m& F7 B; W
DocumentRoot /www/domain29 E& M: y- O7 `2 q3 W- z" R
...
" _! L, Q' c2 h* h) a. G$ a, T</VirtualHost>% D* U, ]( m2 ~4 U4 O# b
& i% z2 J! S. R, h0 | : l- c! O' X0 {; N; ]9 b
% Z/ p/ T/ V) M+ l5 ]# k* f
来源:http://fengyu.china.com/Vhost.htm |
|