|
unix 平台与NT平台使用apache server的设置相同。以下重点以unix平台为例
) r7 m5 R6 p5 |& c9 q说明apache server的设置。另外值得注意的是,虚拟web的成功设置,有大约" h1 `* [% n1 R* e: Y8 L) x
50%的工作量是在域名的注册与解析方面。所以一般先注册好域名然后再做
+ X; j A7 i- X) O" ]虚拟WEB设置。* b% ]; Z- t; N0 ]
& u2 m/ w& t: G, G8 n4 `
一 、IP型虚拟主机1 w" E4 ~+ z1 u; y
6 E( O0 O3 I: NIP型虚拟主机指每一虚拟主机对应唯一的IP。可通过多个物理网卡或虚拟网口实现多IP,Solaris2.5和Windows NT都支持这种方式。3 H4 ?7 Q) @/ j
% O/ A1 }' ~0 e! R8 T6 O: V% W
两种配置多虚拟主机的方法:; a" V U( l/ P
9 G2 L9 q- J- l& M' y8 N1、为每一虚拟主机启动一个httpd进程。
; P; {3 M& u2 R) w! i2 t" u
8 d% t$ Z# M# Z1 j& |5 Q- |5 n下列情况下使用此方法:
. q% p+ i, f. d1 D/ f! d1 n
: R7 K/ r3 t7 h3 O? 需考虑安全隔离问题,如两个httpd运行于不同的User、Group、Listen、ServerRoot,两者用户除通过Web相互浏览数据,无法访问其他数据。
8 V( W+ g+ |: a" a; R" o
7 P N+ F8 t% @0 x% ~? 能提供足够内存和文件描述器。
9 t5 w+ g; u- c
( x! y4 J) X0 H) @* k: K- B设置方法:( X% R' [( M- X; ^
. _6 i, p- L1 }0 ^: s( p _
为每一虚拟主机建立一个独立的httpd安装,在每一个安装路径的配置文件httpd.conf里,用Listen指令指定进程服务的IP,如:* J; L; n7 L$ K
# V8 a' h6 \$ lListen 10.68.37.10:80* |* u( {, U) @* a
* n% c: V9 k9 j- P) Q2、为所有虚拟主机启动一个httpd进程。
' y/ \* d. G: g! H8 O
; l0 }, l% U8 T( X6 I) Y3 ]下列情况下使用此方法:$ V( y, d9 p# _- |2 _! |' w
; a$ A& S: B" I* ]/ a u6 l
? 允许在虚拟主机间共享httpd配置。
! K% u* b0 U' r; ^) Y6 V& V( O7 @9 }! z' G/ U( L
? 计算机服务于大量的请求,运行多个进程使服务器性能降低成为重要考虑因素。4 S: q: c/ S$ i: p4 N7 ~- i$ w
* E, D! l8 `, X2 m" J, x5 m设置方法:
% I% [) s' I0 v4 \. [2 P% u0 h4 i2 `: v7 P% ]8 ]0 w2 Y
在配置文件httpd.conf里,用VirtualHost指令为每一虚拟主机设置ServerAdmin、ServerName、DocumentRoot、 ErrorLog、TransferLog或CustomLog,如:( x! T0 B) W5 f! Q: j/ n9 s% Y& D
' Y) x5 {* K6 M0 R3 r<VirtualHost www.smallco.com> #此处建议用IP
* ~/ K# P* C5 h7 H/ B5 XServerAdmin webmaster@mail.smallco.com5 N5 V3 l7 G( @0 S
DocumentRoot /usr/local/etc/httpd/htdocs/smallco
6 S$ @* T7 H# _% P8 O; uServerName www.smallco.com #建议此处用域名
4 q- f9 S( G. x$ JErrorLog /usr/local/etc/httpd/logs/smallco/error_log
& J. o k7 q" f Z% l: YTransferLog /usr/local/etc/httpd/logs/smallco/access_log3 P- u, p+ Q9 ~# T9 F( p- o6 S
</VirtualHost># Z8 ?* T( Q' m2 Q
& E# ]9 U+ r+ \2 G; m9 z
<VirtualHost www.baygroup.org> #此处建议用IP
* ]8 N* J1 s4 UServerAdmin webmaster@mail.baygroup.org
' g: M- w/ h+ _, wDocumentRoot /groups/baygroup/www
$ ~. O) L/ F2 RServerName www.baygroup.org #建议此处用域名
3 ~! z: t+ }3 |: e7 e1 A* u% WErrorLog /groups/baygroup/logs/error_log
! [% M0 d& V( \, h9 i6 m, w( GTransferLog /groups/baygroup/logs/access_log
0 G9 J% d2 L. }8 c4 u# @</VirtualHost>
+ y; s# R$ x3 X" i) @. J: n9 w/ q5 T9 U; Y1 E
同时要做虚拟网口或网卡的配置,在DNS也要做相应设置。* h- [* _2 z( l+ l3 I
j6 d; c# o) J$ B3 D; [- r! i* X1 R
二 、名字型虚拟主机(Apache1.3以上版本支持)! t |3 F Q8 B! b
1 D" k7 \% o: b0 i IP型虚拟主机虽好,但不是最佳方案。它要求每一虚拟主机有一专用IP,在某些机器上难于实现。
* g$ `4 z0 b/ H8 ~/ ^
J2 h4 W( h5 e) x名字型虚拟主机是指每一虚拟主机的名字不相同,但IP一样。它的好处是不限制虚拟主机数量,配置、使用简单,不需另外的软硬件。缺点是客户端必须支持该部分协议,最近版本的浏览器都支持,某些老版本浏览器不支持。但Apache为此提供了解决方法。6 ^& q! l. N5 J, [2 {5 i
& c: w# a4 S- L6 ^4 T% h
设置方法:
$ q- @# Q# D/ n9 ^. @( x1 k R9 Q2 X" M$ B' i' d K
在配置文件httpd.conf里,用NameVirtualHost指令设置虚拟主机,如:6 ?6 U# M x7 h8 c* W+ r
+ D. N8 e5 G' W" o/ d9 L2 `NameVirtualHost 111.22.33.44
0 W/ G& y, H3 h1 u/ `' i3 ~: \
. A5 L5 x7 k+ c6 i) H g8 \<VirtualHost 111.22.33.44> #建议此处用IP5 o9 H2 ^& x' `8 d( U; r$ ^( W
ServerName www.domain.tld #建议此处用域名( W7 F! M& l$ [- Y) N3 j* r* C8 P
DocumentRoot /web/domain
; K P, X1 r5 F4 \</VirtualHost>9 f- a# @; f [3 l* T4 P2 i' M' s" l
+ n9 u ^6 c! s7 j; R同时,在DNS定义www.domain.tld指向111.22.33.44。
+ H4 X& I1 H* O8 x0 i% ?$ L# F$ L/ R' Y
注意:当在NameVirtualHost指令后使用IP时,任何使用IP的URL请求都是针对虚拟主机的,主服务器从不会响应一个使用IP的URL请求。
+ G$ b0 g: g) r. m% r. a
, N" K) [ F3 i2 W: f' E另外,有些服务器希望以多个名字被访问。例如,假设有某一IP的服务器,希望以名domain.tld、www2.domain.tld都能被访问,做法是在VirtualHost指令部分使用ServerAlias指令。如:% S3 U D6 U9 Y( x. `3 Z" ]* U
1 e" Q- O: A$ S( G. c% S! h
ServerAlias domain.tld *.domain.tld
: R* } E+ i: c* k. G8 f" ]9 C6 d2 @: u. i
另附一些虚拟主机的设置实例。 ( h" G$ _3 h' [, U7 A: E
8 S9 i4 b' |8 @7 w
, Y# ~$ _; q* ~
9 N2 H% N' e# u. `0 [5 J
# i$ u1 J' o7 i& |
2 f4 y) \! {/ n4 T- j附:虚拟主机设置实例, t. r* U& ?( a& ]4 Z* p
t% }* }+ g/ }* }, [' ]IP型的虚拟主机配置- j; G8 x' H/ @
' V. d4 v6 _* v, e4 g$ ISetup 1: 服务器有两个IP,* B$ m `4 o% U4 F/ v
8 v0 l, X8 O3 P, k111.22.33.44 server.domain.tld
4 M4 q! E& g9 [3 e% r; v
" J& ?- o, X9 B7 b0 j e$ O111.22.33.55 www.otherdomain.tld
( t0 A! Y. P% V T; y3 x' s( G8 ?: w. n
www.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。
8 K5 S( D9 J6 k- g5 j' s- o6 C6 \
服务器配置:8 S# k' N* c5 z" b$ u
' O- Q' x0 J" |& ~
...
" k+ b- \8 l [. t) l, ^0 ]% q( t* f! ^: w
Port 80
3 M6 `- F7 A: e8 k$ r1 @3 M- k, m2 d6 a, X0 d; Y7 q S
DocumentRoot /www/domain: @6 g5 ~& Q8 b, K# }
ServerName www.domain.tld
+ Z) `: u, e# v% e' |<VirtualHost 111.22.33.55>
/ L- j- B: ]" h9 G3 ~DocumentRoot /www/otherdomain0 }, Z( M7 R9 z B6 V- v
ServerName www.otherdomain.tld7 p8 C5 p% M% ^$ P, z
...
- a, d; H6 k$ [/ {+ G</VirtualHost>
& \8 R% z5 G% B* D* E2 D0 \7 R* B. d# ?) `' M3 a
Setup 2: 基本同Setup1,但不设置专门的主服务器。
0 i7 t; D% j) z- l8 h
" t8 }9 }3 D% C. V2 \3 M6 E服务器配置:' L2 _" F. ^. ~3 A
( L4 p8 E/ y3 B; G...4 G" u4 N, e/ @
: C5 _2 y3 ?0 t7 A( C$ A/ b
Port 80. w# D/ B2 B9 |+ T s6 H" B0 E
& Q% b1 z1 I4 p
ServerName server.domain.tld- Y3 X. c3 N6 O! z* b) d4 ^3 g
<VirtualHost 111.22.33.44>
' S; q C; y& j5 RDocumentRoot /www/domain6 K: w3 B, ^' U( B5 ?! ~7 M
ServerName www.domain.tld) C8 i, B& I2 G' L* A; N
...9 i# a2 t+ A" H: o' T9 o: o
</VirtualHost>
2 O0 S+ c1 s1 r, n6 |! I4 H. ]& @+ |" Y c) w0 J- o
<VirtualHost 111.22.33.55>5 `: r4 g1 W) s2 L/ P1 d! T
DocumentRoot /www/otherdomain' t- i# S4 w& C7 A1 ^9 s% T
ServerName www.otherdomain.tld% g' m3 q3 J' g+ H& @: B& M
...! U; O) o4 _, H; X Y, n5 t4 k% u
</VirtualHost>
* @6 M, T! }2 W0 f% d
* `$ [. Y, ~. \4 F! V这种设置只有当URL为http://server.domain.tld时才击中主服务器 - ]' p2 Z# b( q& X) t+ {
% j# c: E$ [% h+ i6 B3 ^$ J6 J. rSetup 3: 服务器有两个IP,9 L. {& x% T& F/ m! S- [3 ^ j
6 H# I' q0 k/ F8 A
111.22.33.44 server.domain.tld
) [9 o7 B( B5 z+ [" h! h111.22.33.55 www-cache.domain.tld
+ o' Y D7 ]6 y6 W6 c7 Wwww.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。
, \: n6 m! o9 T' Hwww-cache.domain.tld是proxy-cache,端口是8080,Web服务器使用默认的80。
' _1 ^, U6 @+ \5 z1 }
0 r! o- V* L' e3 M1 Y5 n& Q6 N服务器配置:
* g# r* ]# J8 V% q0 N7 F$ J
. t* k5 r7 }" L, e: F...: a( w+ `; n& X0 U! M1 d
+ |" r2 \; k! [0 a; l6 V; ^
Port 80 @- {6 K; x' t
3 x5 \( R% n/ |5 O0 z$ m
Listen 111.22.33.44:80
, P- V* j0 D6 x: A' l/ Y/ L3 xListen 111.22.33.55:8080
: x" O8 Q" B( o6 X/ }' {8 q! _/ h# X, y# B$ N) H5 k
ServerName server.domain.tld4 L t4 a% v, E5 x2 F
<VirtualHost 111.22.33.44:80>) a, S9 A, T# i$ Y( G
DocumentRoot /www/domain0 G& B3 _, @; k1 n
ServerName www.domain.tld
% m7 q' m0 g/ k# y: p' G...+ d4 t/ T, z8 {- b$ `9 ?$ m6 o
</VirtualHost>+ }; F% s6 B, a1 I( m+ Y
. n- {" r# Y U( V) D<VirtualHost 111.22.33.55:8080>
, {; \8 j# {/ t8 }1 Y( z$ X+ XServerName www-cache.domain.tld/ G5 `( p; m( a0 N% | \4 `: W; O
...
; l, D2 K- N- i* \/ P0 g& l' i, ]<Directory proxy:>) @) K: u. n' L
order deny,allow" [, i6 _5 U# L5 u
deny from all
6 r" d% y% r1 O/ D/ Y1 r% {allow from 111.22.33
; g8 ]8 ?/ k* b5 C% U7 c</Directory>
8 ?' V% W8 i; q. I; E0 [- P</VirtualHost>
" Y3 M2 q& `+ x( w, B6 G
% o7 c* \9 a3 _4 a4 l( q: L( j * A/ I% @5 x- U4 D/ u* T1 S
0 P1 M+ M/ b- G# e) l, X名字型虚拟主机配置
* q+ E3 _ V- y- o! T$ h, j. A) G7 S+ m* ^! q+ g! w$ \
Setup 1: 服务器有一个IP,' u0 r4 ?# f9 P9 ?" R1 @
+ x8 V' x# r2 m' s. C- l3 P111.22.33.44 server.domain.tld.
3 l( Y+ l9 C+ A( b) [ v& m p* i/ c! ?" p4 z- @
www.domain.tld和www.sub.domain.tld是别名(CNAMEs) 。
' N3 c9 E4 r- y' Z& d/ A
' q+ q% S- l8 O7 Z1 F服务器配置:
$ D- B. a$ k( W9 w& m4 i) B
- d G( |# T* W( K6 P# m) [! x) ~, g...5 ]. R3 | k2 n; j4 S
7 {( }2 N0 w/ u0 D7 b, yPort 80
5 O( g% L# L9 [
7 @6 z4 A8 s% ?ServerName server.domain.tld6 _8 |# i+ }7 d% q
NameVirtualHost 111.22.33.44 6 @/ Y* B; y; h. ^# |
# E/ U: d; g% n8 p6 V<VirtualHost 111.22.33.44>
6 ?2 T1 u9 N/ A3 T7 cDocumentRoot /www/domain
4 i) {* z4 F; Q# L. n3 uServerName www.domain.tld
, d- i4 g% X2 x; x) ?1 V...
/ X- E7 S4 ^1 |7 U</VirtualHost>5 T) f5 O" Q) f) u4 d: E* z
1 C$ e1 p9 H" e) p" g1 F$ l" w+ G4 ~<VirtualHost 111.22.33.44>4 [+ C0 X% i2 B9 s* `, Y
DocumentRoot /www/subdomain
, @ B% y( g7 a% ]2 `ServerName www.sub.domain.tld
5 ^0 ]- i* Y2 C.../ h4 s* l3 g2 r. {
</VirtualHost>
) M3 \' c% ^ o) P2 @' w- \& i3 `1 Y& f$ } j; V9 s
若使用IP访问服务器,由于 www.domain.tld 有最高优先级,被认为是默认服务器或第一服务器。
: T' ~' \ G+ y- `/ z9 ]
) ~1 t: }; t* U% j. JSetup 2:服务器有两个IP,0 a3 Z. f) ?( C
# D7 s# Y* f1 T- y: s9 k7 R
111.22.33.44 server1.domain.tld 用于主服务器
. q* w2 y; B: z2 w' L/ A111.22.33.55 server2.domain.tld 用于虚拟主机9 `5 u) v# n6 |- |7 c+ n
别名www.domain.tld用于主服务器,' D5 q- r' ], v' f) G1 V) ~
别名www.otherdomain.tld用于一个虚拟主机,, l3 k" g, [7 x( s9 Q
别名www.sub.domain.tld,*.sub.domain.tld 用于另一虚拟主机,7 C; T7 G, v) O+ F; Y
& L+ V* t# q" F: X( H服务器配置:
) \9 N% B, H- p6 l( y, c" R
. a* E+ [, j- b...
+ l) U- g0 s8 ~6 C/ A0 e& U
( \- @) J7 I) g- K" f7 dPort 809 B. W& J* q2 |$ s2 R
+ k4 \! d8 N8 t0 UServerName www.domain.tld
y7 S, K% `1 m" s3 v# D; sDocumentRoot /www/domain7 T1 V \; j- }& i% A2 w
NameVirtualHost 111.22.33.55
- ~* T, a$ X3 y3 y: |" W9 C<VirtualHost 111.22.33.55>
7 r- D6 t4 r+ j* YDocumentRoot /www/otherdomain8 u0 ?! b% e6 M/ ]( b) s
ServerName www.otherdomain.tld
8 o: o% W# z# O# u! x8 K...& K( N; z( @$ |( C
</VirtualHost>
( R1 U# S2 z4 z- ]. ?, q6 m" j" O5 _
<VirtualHost 111.22.33.55>: F1 Q7 `: L% `& z$ Q
DocumentRoot /www/subdomain' x; |4 l4 }: @: D
ServerName www.sub.domain.tld
$ w. H' V# J8 |0 J, E# ? BServerAlias *.sub.domain.tld
4 O2 M; `1 I- q... @5 R3 P$ j& ~
</VirtualHost>
" }) l9 Z" M/ S6 J; B: Z- w
+ F* Y( ^+ B9 i2 G5 t8 u" A0 U混合型(IP/名字)虚拟主机配置
7 q; F4 O3 Z( g8 z+ n4 N4 M! v0 X+ h
7 I9 \4 m1 m, HSetup:服务器有三个IP,
" B( O; f/ b) \( E2 X5 j$ g4 ^1 ^) s
111.22.33.44 server.domain.tld 用于名字型虚拟主机
, P9 e! x$ N% Q5 [111.22.33.55 www.otherdomain1.tld 用于IP型虚拟主机
! m _* g! ^' q9 x+ F111.22.33.66 www.otherdomain2.tld 用于IP型虚拟主机
* L+ p2 k. Q! W
# {4 ?7 Y8 g: l, B服务器配置:
& C. o" j: U- G7 C...
4 W# D. U8 s" E9 {5 I
6 g# {+ A) U, j+ @) T8 o/ J% j- }Port 80* k3 t! j/ F' b. ~, d
ServerName server.domain.tld0 A. e& A5 t( |; _ c
; a+ H$ ^0 l+ M3 r GNameVirtualHost 111.22.33.44' I2 Y4 s' S) ~) j" H y
; V! S- V$ X) A
<VirtualHost 111.22.33.44>
$ R" k( ^( k {5 VDocumentRoot /www/domain
& f% Q' s0 F) q6 F. x6 pServerName www.domain.tld
/ ?' R, i9 P7 |...4 e9 P5 Z9 s7 J! l- l' w9 s
</VirtualHost># G; T. H/ ]/ [
. e* k- D- i( r v6 o T<VirtualHost 111.22.33.44>" x* Z) f* W/ B4 w2 y
DocumentRoot /www/subdomain1
8 ^2 q+ s+ L. `' z3 mServerName www.sub1.domain.tld4 C; n0 P) Z, S
...1 T% X7 | u1 w" B1 ]
</VirtualHost> " h" m0 f2 x* b* G
# `' G& j- T0 M' g
<VirtualHost 111.22.33.44>" A* D: ] E; o
DocumentRoot /www/subdomain2* P6 I; w# e" e# C
ServerName www.sub2.domain.tld
5 x4 a$ X0 _" q% C; W& e2 W...
8 b/ k+ m& r! [% V7 m</VirtualHost> ( n" w4 V, ] p5 e" g
7 p! {0 x* Z- o6 r' p" x$ A<VirtualHost 111.22.33.55>
2 i% W! ~& H. i4 e. eDocumentRoot /www/otherdomain1
' ^+ @9 a, _* `6 f1 D/ c4 K- _( VServerName www.otherdomain1.tld/ ^( i! C) q4 t5 R* g0 ~
...6 @) h! m5 E0 T6 ^2 W- W3 L
</VirtualHost> , w6 I7 q; x* t
8 h( a( t$ N* u7 @( ^
<VirtualHost 111.22.33.66>3 Z) b- u* h2 W# {1 ]
DocumentRoot /www/otherdomain2
( k- \9 f. q8 QServerName www.otherdomain2.tld; f) U P1 R4 U/ V
...
7 d0 K: F; ^& K) m" g" r</VirtualHost> % b# q8 M7 `0 N' b* d
) K2 r3 D5 l# I: K/ Q/ P
端口型虚拟主机配置* ?+ M' v. S8 Q. C, l
; [3 x7 W. y6 Z; U! N, eSetup: 服务器有一个IP,/ }3 a7 p2 V) N, a7 R, r1 q* J
3 G8 Z4 g! M( [6 D/ y Q) }111.22.33.44 www.domain.tld: R8 ^/ G: w1 `" l8 z4 y
: \ E5 c4 C& R. V6 p不需要另外的别名或IP,采用端口型虚拟主机即可设置一个配置有别于主服务器的虚拟主机。
' v( [7 ^ P+ }; s0 e, g, U6 e5 y t' |2 o: E. ], J( H. ], h
服务器配置:
. J; @2 k$ T, _2 F# s...8 Y; B/ A p5 a
" H2 J# d9 O% T/ E1 X
Listen 80( C' E& L/ U) C' w9 m5 E
Listen 8080
( B2 y1 ]% ]- E4 ]- t
: Y8 ]! P1 q- ?$ W" A* t3 M) Z. DServerName www.domain.tld
* K Q: B- ~8 FDocumentRoot /www/domain
2 d! a! N* [0 h Q9 N) W. z6 I4 w( t" C( a% E" _
<VirtualHost 111.22.33.44:8080>
- }# F1 Q) m. ]9 a: c( vDocumentRoot /www/domain2
6 D- w3 M/ I0 q% D...
% Q$ [7 Q& F" T& S6 ]</VirtualHost>
- G* b$ j% v( } A- H: G$ h; v0 L* [" v, t6 |6 E+ R7 l
a1 O* o2 l8 @
+ Q) u7 i( R; g" @5 o0 v; D来源:http://fengyu.china.com/Vhost.htm |
|