|
|
unix 平台与NT平台使用apache server的设置相同。以下重点以unix平台为例! U6 X0 {1 x: R$ q- H
说明apache server的设置。另外值得注意的是,虚拟web的成功设置,有大约
$ h r+ ]& ?6 O9 ^: D1 j& V8 Y50%的工作量是在域名的注册与解析方面。所以一般先注册好域名然后再做
# z2 }+ J, P( \! u, w% `虚拟WEB设置。
8 B' h4 f5 N$ ~% G* w. Z
9 f2 D0 q3 f( u一 、IP型虚拟主机
7 `) ]! k( o( _
5 u: k) C% m2 P( y I% q6 vIP型虚拟主机指每一虚拟主机对应唯一的IP。可通过多个物理网卡或虚拟网口实现多IP,Solaris2.5和Windows NT都支持这种方式。0 M7 @: T: k h* K
+ B$ i" s- Y; ?0 W
两种配置多虚拟主机的方法:
& ~" G2 r" [6 Q2 k. e& Q' I' M
- O; Z8 i, u1 w( a3 [- U0 q1、为每一虚拟主机启动一个httpd进程。6 R% M, p9 _6 I/ e
! w! j% u0 i" K `3 h u" N- c
下列情况下使用此方法:2 E5 }# ~" q$ c2 e% J
7 Z7 T g$ b* V) n? 需考虑安全隔离问题,如两个httpd运行于不同的User、Group、Listen、ServerRoot,两者用户除通过Web相互浏览数据,无法访问其他数据。4 T- V1 U5 R0 P
6 I3 O5 ~3 W2 S5 O. N. {# b
? 能提供足够内存和文件描述器。2 `4 m) h# B6 I( N; r. u1 I
) b8 G* }7 Z" R+ D5 ]* X/ M- S设置方法:
0 p; g& G9 p! Y; C s8 i T" _! Y2 Z5 ]' W- x" g
为每一虚拟主机建立一个独立的httpd安装,在每一个安装路径的配置文件httpd.conf里,用Listen指令指定进程服务的IP,如:: Q* f$ m" ^9 V) n1 z6 X
$ K: C( s: u# B* r
Listen 10.68.37.10:80
5 B. o% E" e( B7 s5 }+ U, a5 I; A7 Y4 z4 ]4 U% b% w t
2、为所有虚拟主机启动一个httpd进程。1 a! ]/ R- U. {% S/ b3 Y
% J7 I; K) Z( Y* t2 ]下列情况下使用此方法:& T$ Y% s7 [! _- e
( X4 @: u8 d# B. u m0 v1 R? 允许在虚拟主机间共享httpd配置。
, j" v% j! O# z1 K6 G/ s x( C. T+ }/ X! t! u
? 计算机服务于大量的请求,运行多个进程使服务器性能降低成为重要考虑因素。) @: V# G+ i: f" J4 s
3 ^* o) Q& r4 U% n" P" s4 F
设置方法:
8 p4 O2 N* I4 B
7 C. X: _7 {, `1 T* {在配置文件httpd.conf里,用VirtualHost指令为每一虚拟主机设置ServerAdmin、ServerName、DocumentRoot、 ErrorLog、TransferLog或CustomLog,如:2 k I7 I. Y2 p0 K* \+ p6 M
2 N4 _+ I7 A9 X( v5 J
<VirtualHost www.smallco.com> #此处建议用IP" }4 b, Q. T& J: |! W
ServerAdmin webmaster@mail.smallco.com7 r: v+ O7 y: e. H, M. }
DocumentRoot /usr/local/etc/httpd/htdocs/smallco7 B% t7 o8 l6 J2 Z
ServerName www.smallco.com #建议此处用域名
# n/ _& c1 _6 D1 _ErrorLog /usr/local/etc/httpd/logs/smallco/error_log
8 r- k# U& K. O4 o3 F" K$ W4 w) |& dTransferLog /usr/local/etc/httpd/logs/smallco/access_log t% P+ P3 d/ c
</VirtualHost>" {2 Z* v5 I& G( u4 P
3 k$ u1 o3 J8 t+ Q. {1 P# _$ i O4 f<VirtualHost www.baygroup.org> #此处建议用IP
1 W4 T' H' S" a0 h0 F+ @ServerAdmin webmaster@mail.baygroup.org
* A9 K6 X6 J j6 T; ]1 I2 i0 nDocumentRoot /groups/baygroup/www
& `+ t& U1 o5 \' h2 sServerName www.baygroup.org #建议此处用域名1 e1 x! L: }( _/ |% P) v
ErrorLog /groups/baygroup/logs/error_log
4 x4 b! @( v& Y. ]9 lTransferLog /groups/baygroup/logs/access_log
7 ]* v! P& L. e8 N</VirtualHost> % ^9 x# j V( Y; c+ R
+ Z4 ^, l" z8 B1 F- I g同时要做虚拟网口或网卡的配置,在DNS也要做相应设置。
& \1 E# j! w1 y* \7 i' u: I; h1 l9 r
. M- A9 y$ V4 S$ u二 、名字型虚拟主机(Apache1.3以上版本支持)
- Q) ~! _+ ^8 \- a" c3 F5 W7 O5 n7 _$ f' f3 Z. a& A
IP型虚拟主机虽好,但不是最佳方案。它要求每一虚拟主机有一专用IP,在某些机器上难于实现。
6 v: W5 [5 Z) q" a, ?4 g
1 q4 z8 m( v# I7 `: e4 L& \6 K" G名字型虚拟主机是指每一虚拟主机的名字不相同,但IP一样。它的好处是不限制虚拟主机数量,配置、使用简单,不需另外的软硬件。缺点是客户端必须支持该部分协议,最近版本的浏览器都支持,某些老版本浏览器不支持。但Apache为此提供了解决方法。4 L, T7 [, G. D# |8 y% O I
7 l% K$ h4 c) j设置方法:
) ^$ f2 h* m9 s4 I' P& p7 B# z# s+ P Q$ U
在配置文件httpd.conf里,用NameVirtualHost指令设置虚拟主机,如:/ Q/ j. c* Q& c$ o
2 @6 j @5 l1 k9 h% w( O+ H8 g9 ~# S
NameVirtualHost 111.22.33.44
( q1 b; @$ r( O8 T9 Q7 l% M
: ]- p1 V: B) h* p<VirtualHost 111.22.33.44> #建议此处用IP* ~* ]8 H& Y( o, u& {' x( U+ n
ServerName www.domain.tld #建议此处用域名
) u' n3 z6 d/ ~( E1 YDocumentRoot /web/domain; j6 A; \( l+ T+ X2 F# O! z/ S# D& V
</VirtualHost>
. o. J5 _, _' i' ?0 d) o
" u7 K7 j0 |2 D2 ]( e' s# X同时,在DNS定义www.domain.tld指向111.22.33.44。% E7 w& p+ K# e2 A, F5 S( Q- _
, x0 E: w; B$ ~, E" U6 d
注意:当在NameVirtualHost指令后使用IP时,任何使用IP的URL请求都是针对虚拟主机的,主服务器从不会响应一个使用IP的URL请求。0 O# z* i: g m" b4 c) s
$ H; X: j( O/ e' g7 m: d* X/ n另外,有些服务器希望以多个名字被访问。例如,假设有某一IP的服务器,希望以名domain.tld、www2.domain.tld都能被访问,做法是在VirtualHost指令部分使用ServerAlias指令。如:7 [, b( k( d9 M$ l! Y& e$ J
+ ?2 J& C- ]: s- i, a2 x& Z0 rServerAlias domain.tld *.domain.tld9 W2 U" b0 Z: R! `9 f# p3 A, k
8 A$ D. g) n% d+ z: P0 s
另附一些虚拟主机的设置实例。 P( _7 Z: u L6 K4 `( g d6 ^/ f/ L
' ^) F" O8 C1 C1 G. m. D0 S. i
! h) ]& A5 w8 Z3 {& h9 k& Z' g! o% N/ n: U2 o7 ~8 \! b/ w
: \6 E6 v, G' z- P6 S
3 ~ U- R; P5 f2 z
附:虚拟主机设置实例
; B" N# Y+ s- U* F& V. p4 |' x. }: Z* }- T/ J: J5 X+ f
IP型的虚拟主机配置
3 A3 {/ s4 h9 T b
6 a4 m! G8 D: D/ o" r- K5 [& h) M8 OSetup 1: 服务器有两个IP," w# M, p8 ], y8 p1 x" a+ g% C
3 V' _+ H) W' C! ~* c7 V
111.22.33.44 server.domain.tld6 h+ Q2 [; D$ B" R1 c
" N! i. a7 s" g/ Y1 `; t. Y9 V! A111.22.33.55 www.otherdomain.tld. d5 y+ W8 M U( l" z4 B
3 M9 h1 s# H8 ~# V! l t' v9 ]
www.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。' w3 C8 t R4 V# a2 D5 O
% ^) H+ ?6 ~% F& k
服务器配置:
# ~4 y, r( [8 U5 {! }0 X3 X
, y# B1 D: u* c0 I9 @- S...$ X4 P7 E/ h6 g8 H- O9 f
1 g ]5 j3 j& B3 c& A+ APort 80
- m7 I5 B6 e9 ^
2 d, @5 u+ h; i( l2 GDocumentRoot /www/domain
. w/ X/ C5 | i7 }! t" xServerName www.domain.tld
k5 G9 d3 k( {5 u; m6 T% p<VirtualHost 111.22.33.55>; \/ U, [% T* o8 }8 ^
DocumentRoot /www/otherdomain: d( b! {5 Z4 p0 s$ P
ServerName www.otherdomain.tld9 b% T0 o; p; @; V/ f9 \" k! ^- _
...
- O# d7 {- J0 z) K9 Z ~</VirtualHost>
% I# z& q( s3 {/ x
1 z- M7 |/ t/ ?0 B3 @; dSetup 2: 基本同Setup1,但不设置专门的主服务器。) h, [* q7 }) s0 ?1 Y P, a
: R& G7 p' s6 U4 i( p* R6 b服务器配置:$ m. j- k$ s( P2 y6 T
1 a1 W8 Q5 N, o" H/ S...* h9 g8 }' m" x; r c! B* S, a% A
K) C9 e0 t# SPort 80
1 }7 r0 z' w3 A0 D
" o4 K# B. t0 s& V4 _6 ?+ A! GServerName server.domain.tld
" Y. J( q0 n; ^<VirtualHost 111.22.33.44>: X% v1 D2 ?. h8 _, o
DocumentRoot /www/domain
! E$ T# f; E- ~) g# [, sServerName www.domain.tld
' T1 R( ~+ T3 M# U! L% F8 @...
. U& i/ ^$ y) N6 L% x/ M</VirtualHost>; X! b& I6 N N- q' {' f
. B$ U$ W* w& b- B<VirtualHost 111.22.33.55>
4 \7 M3 O7 q7 N7 t Y; i* `DocumentRoot /www/otherdomain
. R9 B/ t8 D( \, gServerName www.otherdomain.tld
$ K2 A" P6 p% j, x1 u...* r- ~& p7 P3 K) a$ M* g
</VirtualHost>
E! W3 ?7 a( L: m) o. h" h/ C- A, d+ W- K: Z# m$ ~% b, n0 p
这种设置只有当URL为http://server.domain.tld时才击中主服务器 6 C2 e9 y! l; ]# k- ^* N7 [- Q
) C1 e; T! G* t- O3 K* d
Setup 3: 服务器有两个IP,7 F# _2 [6 d$ j) {" I) K/ p
) P; X2 U2 Y- e- u111.22.33.44 server.domain.tld
% g f: f3 _% Y7 I/ N8 x111.22.33.55 www-cache.domain.tld
3 |' x, A0 `$ ~www.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。* V, G4 z3 l' ~
www-cache.domain.tld是proxy-cache,端口是8080,Web服务器使用默认的80。" W9 U/ ^4 T4 S4 t/ n
, Z4 a- s: }4 g( ?
服务器配置: 9 x0 }6 x) B0 E' T+ S
: Q8 ?/ O9 i1 j7 D& l
...4 l/ p6 j" _& I
* j( t! c: V2 N+ W- D4 _
Port 80' K6 u/ E6 n& |4 D0 p
* T. [- A; e! a5 l8 `Listen 111.22.33.44:80
1 K1 @7 D; L; }0 x l, d6 b- L @Listen 111.22.33.55:8080" G$ K: L/ C' r& h
" g+ |& [3 ~' h" y+ xServerName server.domain.tld% \( O3 u+ J$ b2 Q9 g9 B0 y
<VirtualHost 111.22.33.44:80># a0 |9 j8 n/ { K0 y. F
DocumentRoot /www/domain) d0 F) i# w6 j1 A0 A7 Z" R# i
ServerName www.domain.tld& d; A5 T+ |+ R
...
7 ?( {* \; y/ D. w9 W% E. j% A</VirtualHost>) Q1 y7 O0 y( t, I0 `' @8 l
. [+ ?1 X" a' z8 m+ j2 E1 n
<VirtualHost 111.22.33.55:8080>
; z5 i( c8 j2 ? b7 fServerName www-cache.domain.tld, Z2 M/ n, S+ ?- ]. V* f& {
...
, s: d5 g4 ^" Q* t" X+ D<Directory proxy:>
. x7 h e L- b6 c6 ]" M& Border deny,allow
% [- g7 E q' n4 v0 y, Y2 Y udeny from all% g* U% o s. ^+ b% Q
allow from 111.22.33 K( Q8 i ]7 O
</Directory>
8 W! ` X2 u+ h7 Y2 h$ w</VirtualHost>7 j8 ^5 \% v% J8 M2 z! S _# k
4 k* o- w o; j
2 b' i+ u* L5 f9 {" O8 S6 K: E* d: v" Z: n% Y8 z# X* d( a: z
名字型虚拟主机配置
( P2 d' h" u) Y) q9 J- r
& e' U! S+ n a8 x$ u1 L {Setup 1: 服务器有一个IP,
6 n4 v% `7 X1 M! U3 B
+ a7 o1 W- I* V8 _111.22.33.44 server.domain.tld. : K7 O5 {5 s: G9 K
2 W6 I4 |/ N9 g l( k* I+ Wwww.domain.tld和www.sub.domain.tld是别名(CNAMEs) 。
0 Q# W$ i( \) R- j& B0 _" b
], m( s, [4 Z* b服务器配置:
, P/ w: v" n* ~: m' c+ T2 Z7 u! X% L6 F; b# D/ _0 y
...% E ~- h! A, S7 z0 C% g7 Q
8 P" {$ q2 ]: r5 N \
Port 809 w1 z/ q( k. ~ I' z
' ~" a z5 N. X2 p* ]4 Q4 `) ~5 R& g5 gServerName server.domain.tld( `! z, A7 |- t; |7 D8 f3 r
NameVirtualHost 111.22.33.44
# j* ~+ {4 l- v5 T- E
$ Z& U: j5 s( D! K7 O3 c* p; a<VirtualHost 111.22.33.44>' K# O6 f$ z- ?
DocumentRoot /www/domain: Q; [0 O$ H, Z8 C
ServerName www.domain.tld
0 K* {3 a3 j2 t0 y5 l7 I( J0 C...( i/ g- u" |9 d" U5 h# a
</VirtualHost>
) o' V- J, q) A* Q" X$ y5 |& e# |/ s5 F, z) s/ i& e
<VirtualHost 111.22.33.44>1 x6 [) W* f) a
DocumentRoot /www/subdomain
" Z9 x6 Y- I' W" t3 RServerName www.sub.domain.tld0 `, X9 x6 G0 Y
...7 C) j8 W4 f$ t: ]
</VirtualHost> 1 L: q6 C- `) D+ x
5 t, g1 h9 a# C3 N d. Z$ \
若使用IP访问服务器,由于 www.domain.tld 有最高优先级,被认为是默认服务器或第一服务器。
4 \; Z% D8 D9 V% m( X8 s. M V' }% h7 ]( R' Q% P9 T/ R+ B" s4 h
Setup 2:服务器有两个IP,
9 b/ ?& X6 k5 D2 P3 J0 ?$ n
7 v/ m& I2 x R" x" w+ [7 h111.22.33.44 server1.domain.tld 用于主服务器
: b; z' q/ D: Z- {1 j111.22.33.55 server2.domain.tld 用于虚拟主机
) C: [# n' u3 M别名www.domain.tld用于主服务器,
# h( z2 X! f, j# ~/ C别名www.otherdomain.tld用于一个虚拟主机,! X: Z2 U: v: f0 T# \( o0 O0 v
别名www.sub.domain.tld,*.sub.domain.tld 用于另一虚拟主机,( u8 Z7 E! J& P7 I
+ H8 N+ O: }. f$ k! ?! B* j. \服务器配置: + A, Y7 `# `; a7 B' z; \" N' ~
* X# r+ @- t# K) H4 G3 a1 ^
...8 O% ^% u/ u' u$ i
4 D0 d [8 H( ~: K) R8 aPort 80
1 q) u5 C4 B* f3 M3 R
1 }# k) S* o; k& G0 DServerName www.domain.tld: W/ S9 X1 S: N6 z$ V
DocumentRoot /www/domain) } ?3 L3 n. m: X: Y- O K, p
NameVirtualHost 111.22.33.55 ?% h6 s8 a' r
<VirtualHost 111.22.33.55>! w( f. G% k; u
DocumentRoot /www/otherdomain7 A- }; p7 ~0 f/ J' F
ServerName www.otherdomain.tld
3 e% x1 r4 D0 T7 k1 g+ V...% ~7 }7 |# `1 H; n0 g" `2 X" N$ G
</VirtualHost>+ h6 g+ L4 M3 S
* S: U3 p a; F+ Q+ o% d7 i<VirtualHost 111.22.33.55>- b) {& F# o/ `2 ]0 _# z& L) R) _
DocumentRoot /www/subdomain9 w! \% ^% R9 I; l" V4 m ]; w3 }" }
ServerName www.sub.domain.tld/ b- h7 a3 E9 t$ y* g2 h
ServerAlias *.sub.domain.tld" O" ]+ l1 C7 g' B
...
; K9 P! k( t2 \4 G" }# I</VirtualHost> , z. i7 D8 [8 m! u; {
# g" @7 J5 A, g" n! u' A0 o6 T3 L! i
混合型(IP/名字)虚拟主机配置& l a5 R! J# D9 { H3 |
2 L$ Q# x; w% fSetup:服务器有三个IP,
1 i: u' J* E$ v8 S
; W9 C _% r! ~$ }( L# g111.22.33.44 server.domain.tld 用于名字型虚拟主机8 A7 `, t& E: g7 Y' `
111.22.33.55 www.otherdomain1.tld 用于IP型虚拟主机
) }. N u4 |! ^: e* s+ M8 N5 H111.22.33.66 www.otherdomain2.tld 用于IP型虚拟主机! z3 R( s- F. o
, N8 I( `$ ~% u" Q! g' j4 n
服务器配置:) S' e. I3 k1 z6 A% `' m2 I
..." }5 I0 P# V/ j
1 K' n1 }- E* M+ n4 }; PPort 80) U* R, w- v, Y, _! h9 P: H
ServerName server.domain.tld
7 u: ?+ q* R2 B
% F- Q8 Z4 L* P3 s% [& `$ x7 BNameVirtualHost 111.22.33.44) l) z: O4 v8 k' |% |$ u0 L
5 C, b4 x/ j2 x/ b<VirtualHost 111.22.33.44>
+ x; G& z1 G7 Q! o9 S, `" e2 ]2 W( a6 ^DocumentRoot /www/domain
/ s, `* {, L' d4 U7 U3 nServerName www.domain.tld
% C$ E/ ]) u3 }5 U...6 y/ m& I3 b& j! N' y
</VirtualHost>0 n$ Y9 q5 r9 Y N$ Y' Y
9 P3 y& {4 _) I4 `<VirtualHost 111.22.33.44>$ X) q! l1 t6 t C
DocumentRoot /www/subdomain10 T; V. v' W% k; m: T
ServerName www.sub1.domain.tld# g B5 t) r. z: J
...' p9 K8 m, }# B' W8 L' b2 L
</VirtualHost>
) E+ _1 ]. d" }- @
) f. S* s6 Y2 {' |5 T! I7 s<VirtualHost 111.22.33.44># d8 G( G1 D" ]& M6 C: V
DocumentRoot /www/subdomain2( Z5 s5 K, c: S# p0 I
ServerName www.sub2.domain.tld8 _! j- b9 T# I$ x
...
: }: H3 I8 b) X% _& F6 t0 v</VirtualHost>
7 n9 P* e5 J; ?2 A, N" m1 v; m* s$ ^, }8 L \5 b8 W
<VirtualHost 111.22.33.55>4 f4 b5 e: e/ S, J" E
DocumentRoot /www/otherdomain1
3 Y) N% u6 ?6 Q; WServerName www.otherdomain1.tld2 u' M6 b, q8 |; N
...8 ~# K3 ^8 N9 t$ J. A, n
</VirtualHost> 7 k3 u3 t6 J" j$ L" F- \, V- {
& O" ~2 q" B, \! t
<VirtualHost 111.22.33.66>* e5 k3 c9 F! f9 k
DocumentRoot /www/otherdomain2
; Y+ _. ]8 X, v8 [4 T/ OServerName www.otherdomain2.tld' A- \- x) z) u' h- |: w) q9 Q
...8 v/ E% O2 n% q' A* y H
</VirtualHost> 2 V! t8 d7 X( c0 ]' m0 L
8 L9 E6 k( }2 G' U) p% T V' W端口型虚拟主机配置
[, I8 }( {/ s: h
( v9 k& O l5 T4 A+ t! W# ~Setup: 服务器有一个IP,( ^& O/ R; b& S8 @; U/ i
) v' N: `' V/ W8 s4 @111.22.33.44 www.domain.tld! B0 @1 K4 B! ~; t# c
2 b4 P T3 n. H' `! i9 _不需要另外的别名或IP,采用端口型虚拟主机即可设置一个配置有别于主服务器的虚拟主机。 5 L4 \7 k& `# J$ A' a1 N
6 k0 q; O; U( _8 I; J
服务器配置:
; ?1 X. \% I+ I$ [, h4 I..." H2 d% g/ j/ j7 z9 o8 t/ ?& ]- y
2 V, [" q8 b# D" a
Listen 80; c5 B' J }& J! I! {. @
Listen 8080
7 h5 r* X Z3 V$ y6 c9 [
, |0 r; m- c! ]; f$ U- [& L8 V4 W8 JServerName www.domain.tld
! k% i5 h+ X* UDocumentRoot /www/domain1 t# w3 J) n- Y' g r# B, k
" Q1 U' u; \( N7 U: m0 s0 o<VirtualHost 111.22.33.44:8080>, h" S: C6 O* Q6 U$ P1 Y% j
DocumentRoot /www/domain20 W. {# \+ U3 f. C4 U% z
...
/ U( K! e) D5 k& C+ t6 f</VirtualHost>
5 L& p1 G2 B! ?# M$ b! z* Y
+ U& l5 [2 z% H p! O
6 e" O: A8 B2 h
1 z5 _9 N6 n$ N/ R' r, x# z来源:http://fengyu.china.com/Vhost.htm |
|