|
|
unix 平台与NT平台使用apache server的设置相同。以下重点以unix平台为例8 D+ V9 k/ ^! B0 d
说明apache server的设置。另外值得注意的是,虚拟web的成功设置,有大约
7 i# \( w3 N8 h1 R3 `50%的工作量是在域名的注册与解析方面。所以一般先注册好域名然后再做/ r" x ] I% r
虚拟WEB设置。 A9 G1 w7 n& V& ^' t" O1 T
4 C1 r! A8 j5 `8 ?! [( w) ~一 、IP型虚拟主机
0 L- R* T9 v+ C% d/ H6 L: T) l- v1 f
IP型虚拟主机指每一虚拟主机对应唯一的IP。可通过多个物理网卡或虚拟网口实现多IP,Solaris2.5和Windows NT都支持这种方式。' Q6 j; m/ `- i. ^
. M% {% U* Z8 |3 f# I
两种配置多虚拟主机的方法:
! H; n* ` @6 s2 x/ x4 c9 f5 n7 N% W- `2 v" a
1、为每一虚拟主机启动一个httpd进程。/ D' r4 m( Q- ]/ N4 j* _4 B7 o4 P
p$ g8 t: t a; z$ _4 g k
下列情况下使用此方法:2 C5 u! N9 X7 D6 }4 k) N
$ f4 _3 E# D/ b% H. c
? 需考虑安全隔离问题,如两个httpd运行于不同的User、Group、Listen、ServerRoot,两者用户除通过Web相互浏览数据,无法访问其他数据。% t8 D) I& |( [" G6 U
' L G+ m5 I. l" v3 ^: e? 能提供足够内存和文件描述器。6 ~+ ]. ~! B/ [5 X7 H
5 e( @- P# U! ]8 \/ Q+ Q6 w( H设置方法:
4 }0 b7 c8 M! K( m& i3 ?8 s9 }4 w: |# s/ V K& f& K; V: z Y2 f
为每一虚拟主机建立一个独立的httpd安装,在每一个安装路径的配置文件httpd.conf里,用Listen指令指定进程服务的IP,如:1 @: [' @: K9 }
2 A4 s5 E) q% U2 l" @" T
Listen 10.68.37.10:80
- x( l9 a8 n+ j% y2 s8 @ P9 | z2 O0 X1 Y, d
2、为所有虚拟主机启动一个httpd进程。% G! k+ _! O: X8 x4 P% a$ p, y
2 t I! p& I6 `! X5 B" X& X下列情况下使用此方法:
& O$ M, Q9 q! J3 z8 L8 x' n- |& |# E0 j# f- E/ f0 D4 e1 V
? 允许在虚拟主机间共享httpd配置。. q" N3 l$ Q% {
6 w! O+ V- G# v( s6 g$ h+ q
? 计算机服务于大量的请求,运行多个进程使服务器性能降低成为重要考虑因素。' b' B; A& s+ G5 y" |+ A2 J' p* C
; Y1 {' a9 \' Y. R, _3 _
设置方法:
7 x0 m" E5 W/ c1 l: v5 B, i
% a2 G9 G6 _4 K5 U G在配置文件httpd.conf里,用VirtualHost指令为每一虚拟主机设置ServerAdmin、ServerName、DocumentRoot、 ErrorLog、TransferLog或CustomLog,如:2 k: b% b* T6 h. D$ L. z v
6 R- g4 c i2 P$ [+ Y
<VirtualHost www.smallco.com> #此处建议用IP* {! y4 T) w2 B6 j, E B
ServerAdmin webmaster@mail.smallco.com4 C) u6 c4 U% J( Q+ Z' j) a6 P6 d
DocumentRoot /usr/local/etc/httpd/htdocs/smallco
1 m( W4 y7 q/ g! }% TServerName www.smallco.com #建议此处用域名
$ T/ }9 U0 q3 [/ uErrorLog /usr/local/etc/httpd/logs/smallco/error_log
$ x: K8 {8 K3 c _! ]TransferLog /usr/local/etc/httpd/logs/smallco/access_log2 R9 a* [' P7 D7 i+ k* Y |
</VirtualHost>
9 j) g+ c0 `" o( m7 t# @9 v! b( ~6 @
<VirtualHost www.baygroup.org> #此处建议用IP$ r2 ^6 ^" o2 J7 S
ServerAdmin webmaster@mail.baygroup.org+ s$ h X, i. C# P
DocumentRoot /groups/baygroup/www
$ D2 | Y% R5 N# h6 EServerName www.baygroup.org #建议此处用域名3 n1 w/ W* J9 [0 W) g$ k
ErrorLog /groups/baygroup/logs/error_log4 o7 [! S: U( X+ ]- D
TransferLog /groups/baygroup/logs/access_log+ c2 } u$ {7 X' p" G
</VirtualHost>
6 `8 K# n' A' h" r1 V4 z5 O3 i" d3 f3 l/ i; z" m2 J# _$ N: a5 o* a
同时要做虚拟网口或网卡的配置,在DNS也要做相应设置。2 ?1 t6 d% m, H9 g
8 l2 m. }5 V+ C3 ^: m4 X二 、名字型虚拟主机(Apache1.3以上版本支持)4 a: ^, o# |5 p3 H% q: |
; S) D2 U) v! d7 i
IP型虚拟主机虽好,但不是最佳方案。它要求每一虚拟主机有一专用IP,在某些机器上难于实现。/ n; O0 ]" u o2 o
) `& @0 s- l5 a- c名字型虚拟主机是指每一虚拟主机的名字不相同,但IP一样。它的好处是不限制虚拟主机数量,配置、使用简单,不需另外的软硬件。缺点是客户端必须支持该部分协议,最近版本的浏览器都支持,某些老版本浏览器不支持。但Apache为此提供了解决方法。1 x8 P. }2 y, u7 I. p# F
7 P3 c" t; R# Z, N( H% ^
设置方法:. o) a7 N8 x0 I9 j3 n
# J; I$ u6 b% U/ z, _在配置文件httpd.conf里,用NameVirtualHost指令设置虚拟主机,如:
$ R9 y3 y, L: t- V
/ C* W1 r2 A0 M7 C6 G( \4 KNameVirtualHost 111.22.33.44
- V% c/ R5 N5 T. V2 ?9 v9 v) b' a/ o/ B/ R0 ^
<VirtualHost 111.22.33.44> #建议此处用IP
5 D0 G$ U' T. M: zServerName www.domain.tld #建议此处用域名, m/ T0 }) C2 A, n2 u* p4 u" h
DocumentRoot /web/domain5 c3 k# B/ h" ~' g
</VirtualHost>) H3 \! b6 f. W8 n: w
' O3 {: [3 [/ K1 E( n! o同时,在DNS定义www.domain.tld指向111.22.33.44。; ~! c2 p$ I4 ~( q
7 i. z* Z' b& v/ B! [
注意:当在NameVirtualHost指令后使用IP时,任何使用IP的URL请求都是针对虚拟主机的,主服务器从不会响应一个使用IP的URL请求。0 |- w, S i) ~3 p" d% o, Q4 j
- r) Z4 q ]' \& ~8 [0 x
另外,有些服务器希望以多个名字被访问。例如,假设有某一IP的服务器,希望以名domain.tld、www2.domain.tld都能被访问,做法是在VirtualHost指令部分使用ServerAlias指令。如:3 O# G4 J3 O. V, ]! I
! M. W/ P- z. W e, jServerAlias domain.tld *.domain.tld$ V! C1 [ `) Z1 U9 R
4 X% K: W. S# g% H% A另附一些虚拟主机的设置实例。
; \$ @! G# |+ y- _9 o% _8 b/ D4 c; R1 T/ G
: J* L) }8 r" g
6 ?% ^' W* U4 u/ ]1 o , z& e* b& [' X0 O
" [9 c) l. c8 _! q附:虚拟主机设置实例
) J, ]- r! _% d
6 O5 O A% ^0 B7 C6 O, ZIP型的虚拟主机配置9 o! p- c. _! Q) b, @
; F6 g3 e- G! o7 gSetup 1: 服务器有两个IP,
) p7 m2 F% z/ a; Z n' S" P. L
' ]1 Y6 _+ ^3 @ h4 Z2 G' _- ~111.22.33.44 server.domain.tld
1 k! u. p, P; d/ _( t6 o- j7 C+ G; n6 T/ i" V
111.22.33.55 www.otherdomain.tld" U$ l8 Y5 x1 n* |1 i" o; ?
) R8 e; A! f6 L; {6 `5 `
www.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。2 a# @$ g( a+ Q
4 u, E5 W1 h* t, L1 v- B4 U& e3 G
服务器配置:
9 W; @: X3 _" u2 e) U
) S4 ^; {0 A8 U& Y! X- o/ u...! J$ n9 n: m7 s \( l L
& c Q. b7 y8 Y1 L* O3 v# N8 hPort 80
" }0 ] \/ X$ {$ s( Z* u
* {1 Q+ R% w# R' SDocumentRoot /www/domain, z1 Y. S$ c I W
ServerName www.domain.tld
, Q* f* r9 [ X5 ~ T# r0 x<VirtualHost 111.22.33.55>/ U# m) L. F6 ?* _; i1 z
DocumentRoot /www/otherdomain
, Y# @) ?3 _& K* ^ServerName www.otherdomain.tld7 K3 i) I) ^- u5 w e: H
...2 G, {6 B7 y& W# A/ B
</VirtualHost>
3 N' D0 t" ]2 o# m; D4 ` q" m" V) Y a) B( f
Setup 2: 基本同Setup1,但不设置专门的主服务器。& q, J- q8 {* V% E2 Y
# g" k( V2 q+ N
服务器配置:2 G, h8 N- k4 q5 N: l
' _5 A: F7 m4 l* b* F% E2 T4 S- P
...
- D5 ]1 [; k% N& T3 o+ T3 |4 C G5 R
Port 80# P R( J) g0 Z. V/ E x
( P d1 R. G0 y) R, r* GServerName server.domain.tld
1 h8 @* e( b$ G# j: c8 A/ b<VirtualHost 111.22.33.44>* `) q8 m+ C0 l1 R! K" i5 h8 }8 F
DocumentRoot /www/domain
. X+ Q2 a& j& Q+ I A0 b: j' H5 B# gServerName www.domain.tld
7 A- _' q, u8 M0 g5 G% I% C...
% M/ |$ K% ? I* }</VirtualHost>
7 d0 w6 L& h! g8 n9 x
2 M. t" ^: ~2 j: A+ e# A) i B<VirtualHost 111.22.33.55>
( h3 | A* m% g- }% }* e9 q NDocumentRoot /www/otherdomain7 Z) i4 M9 x( `
ServerName www.otherdomain.tld
' u; Z3 N8 a& \ r/ X) C9 S...1 G: L& X+ |$ `' k" H
</VirtualHost>
( u: j s+ ?6 Z
. I; k& ^# N9 y! t% h* ?这种设置只有当URL为http://server.domain.tld时才击中主服务器
0 u: V$ x! q- \, F. ^* j; V( A- y3 G& B# K' r4 P
Setup 3: 服务器有两个IP,
5 S: p ^' P4 C1 a4 c! n5 N) h2 |# r! ~" f* Y! f! X1 N4 v @
111.22.33.44 server.domain.tld% L9 H! }4 O+ Q8 J; t
111.22.33.55 www-cache.domain.tld
% Q" B. U$ Q0 `' dwww.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。
( o, R; [+ W& |www-cache.domain.tld是proxy-cache,端口是8080,Web服务器使用默认的80。! U* J; Q |2 _0 j* d
9 s% F0 q" ?9 `( z服务器配置:
5 [7 Q' V/ \' p" V6 M# j
+ G" `% S! t3 t. R8 H' A R1 g) u...; f7 x2 t9 N9 ~7 K/ A
; b. q f+ u: t7 u0 p% F; [3 ]& }
Port 800 ]- h9 O8 `/ y7 B8 ^4 w: D
s5 h. n4 B% L2 \
Listen 111.22.33.44:803 q! g! Y" J. B1 y: ]) I
Listen 111.22.33.55:8080
9 A( o# m- a' z" H$ u
+ `8 F8 o% N& q8 k: @- vServerName server.domain.tld
0 @+ u& p8 G- J<VirtualHost 111.22.33.44:80>
+ _/ @4 D" j/ b" h8 @6 L& }* \DocumentRoot /www/domain/ b2 i3 H; {9 I6 ]
ServerName www.domain.tld& b4 g8 _6 r3 a+ W$ m0 ?
...( \% x/ ~) p! v$ R, J, y( U* A. p
</VirtualHost>4 b; f) U+ I" G
8 q7 f0 ]; }3 ?% Y1 T
<VirtualHost 111.22.33.55:8080>
1 C& Z' |1 B j2 F3 T" U- CServerName www-cache.domain.tld
7 I% O" a' P. K# q...! p1 Y3 m) r; u# w- C1 v6 h, }
<Directory proxy:>
* q2 R! y3 z; Z, p+ zorder deny,allow
1 l5 g1 g+ }; s+ m. Ydeny from all) g4 |) B+ x& Q' p" Y# h$ C
allow from 111.22.33
5 M# O( ?, O! h# Q8 h</Directory>! ]$ ~+ m4 d( Y( a7 r/ W
</VirtualHost>4 |* G: e+ e9 t1 ?9 ]
; v2 e; g$ K& C( t; b
! B; @4 H# p9 p: y/ K1 H+ T P! F7 ] V5 M
名字型虚拟主机配置) C7 `8 S" S4 L Q
/ }4 b) |8 e0 G2 ]
Setup 1: 服务器有一个IP,' @: M+ h: U' N, \. v4 i
$ G$ D: u5 h3 O/ J111.22.33.44 server.domain.tld.
$ |5 I, U, S9 ]) g2 H& p& h9 ?, G q) M8 F
www.domain.tld和www.sub.domain.tld是别名(CNAMEs) 。 ) C: b$ P+ `7 D
. O R* {8 O1 U( s1 `
服务器配置: 6 w: w( D. ~& ~+ {& e9 j
( ^7 C9 {4 f8 I" [0 k7 f...' S( ?5 _ l3 b. L
, c3 Z; g- M- J0 n; @8 T+ ZPort 80# d) U% S& p% D, z9 k5 q% G' [) w8 y
; C( _( E }" C t- p9 s4 o9 HServerName server.domain.tld
% ~2 |, j& f0 s% ]# s2 `2 h) GNameVirtualHost 111.22.33.44 4 b; E2 I$ _8 [/ I0 e$ ?. b5 C
) g+ a2 K$ z$ |<VirtualHost 111.22.33.44>
% e( J% z, ^0 q0 s& lDocumentRoot /www/domain. J( a1 k/ \9 S8 d# Y( x( `
ServerName www.domain.tld9 g4 O% ?; n5 D1 \+ _1 |& z! X+ x7 ]
...3 T, M% v$ k. i; {1 W
</VirtualHost>
6 G- @0 l6 ? ]% e
1 M% f- o' V; O7 x0 s B<VirtualHost 111.22.33.44>" ^6 P2 C' z8 ?8 O( M
DocumentRoot /www/subdomain
' w. R* c$ _& DServerName www.sub.domain.tld/ B+ n" L, J) Y# A0 z- t u2 h1 Z
...
( f) ?$ Y6 c& o! k# ^) N</VirtualHost>
& E3 ^) W" x. d% @
4 U6 g1 |& Z& F若使用IP访问服务器,由于 www.domain.tld 有最高优先级,被认为是默认服务器或第一服务器。
% ~( U3 c2 A* g: ~( w! m
: j- M0 e F2 E& H! A$ ASetup 2:服务器有两个IP,4 T% K; ]6 _6 s/ T# h& _; b N4 }
; `$ {/ S3 R& f3 O" m3 A1 H" N111.22.33.44 server1.domain.tld 用于主服务器$ {" K6 v& S3 n% F
111.22.33.55 server2.domain.tld 用于虚拟主机. A6 c% ~& w7 A$ D M l
别名www.domain.tld用于主服务器,
# E/ V8 @5 p: u别名www.otherdomain.tld用于一个虚拟主机, |' G' q: V3 o6 S8 a: O6 u" T7 k$ A9 ]
别名www.sub.domain.tld,*.sub.domain.tld 用于另一虚拟主机,
3 V$ Z0 j: Z) }* b( @" q2 o+ g6 o! G$ a+ O
服务器配置: ; Q2 j& [2 P, K
) R% X$ ?: K0 [) M! M" t; q
...
; w5 |# y( D( p& j: ~
1 b- s) ^3 S8 \- c6 yPort 80
4 ?8 j. n* y: |. k O6 ~4 d1 J/ z* F& d. E# a3 f5 V9 M
ServerName www.domain.tld
2 z5 y8 e0 W6 T6 F* h6 ODocumentRoot /www/domain
9 E( A" r! y/ G% K: lNameVirtualHost 111.22.33.550 N, ^3 Q% T* z1 C; M
<VirtualHost 111.22.33.55>
8 G. Z" t! ~$ zDocumentRoot /www/otherdomain
3 Q1 b! b: U- ]+ H$ Q H! wServerName www.otherdomain.tld
9 i' ^8 p; M/ {# u/ j) F* |6 {...8 K6 G2 O- V; ]* I/ G1 \- }
</VirtualHost>4 L8 E& R3 j0 _/ n/ t1 n
% m B( C. w3 V3 p
<VirtualHost 111.22.33.55>
& C# J8 a" n7 ?5 p7 CDocumentRoot /www/subdomain
( F% N/ [ y' J$ U; z3 B$ x* AServerName www.sub.domain.tld- L/ ]/ Y5 k h1 [
ServerAlias *.sub.domain.tld0 |9 [* s+ z8 J' G
...& [" x* p+ A; S
</VirtualHost>
- `) O: M9 e8 ?% H* V' L M K) i) N* i7 B/ W1 X; N+ K
混合型(IP/名字)虚拟主机配置' [; W$ [2 r' v/ B& K, C1 Q, T
- e/ \$ z" f/ h- eSetup:服务器有三个IP,: S: h I! X) S
4 e, S; G/ o! q5 Z: G/ @
111.22.33.44 server.domain.tld 用于名字型虚拟主机
) O- \" `. u1 i' B, r111.22.33.55 www.otherdomain1.tld 用于IP型虚拟主机
6 D3 X \/ x1 o5 R111.22.33.66 www.otherdomain2.tld 用于IP型虚拟主机$ p9 ~+ b9 `# \# f
& ?' j% f1 I- m" A1 B7 o* S
服务器配置:
- @' o5 N7 U; D, L8 d' n...3 j/ s* u( y: F. b
T$ Y+ Q9 F( PPort 80
& m3 J( U) N3 z2 ~1 M# v: h5 bServerName server.domain.tld
, o: V3 [% L$ P: \6 L5 [9 n- A
# C( k Z( y. S" v0 D6 INameVirtualHost 111.22.33.44
$ z0 N0 Q/ |! q; d) e
9 Z2 h3 W$ C) a. ~+ {<VirtualHost 111.22.33.44>, n! a5 Q( d9 B7 \3 j& K
DocumentRoot /www/domain7 c% M; c: L: u- u7 r8 o8 F
ServerName www.domain.tld+ H5 U) t$ s6 i: n- b
..." d" W8 s9 t6 e" o5 Z$ ? w
</VirtualHost>
) X; d% H, u, \: S% G. [' ^1 J0 |/ R
: G4 z2 S3 ?/ ^ O8 I<VirtualHost 111.22.33.44>
2 A Y; R8 o' m2 SDocumentRoot /www/subdomain1, l8 A( T% g" ^& G# {6 @' p
ServerName www.sub1.domain.tld
3 e& Z* h1 F# D& B" l2 s...
) Z$ |( {# i; B, R+ ^- `; Z</VirtualHost> 7 ]1 Q, R0 q: y# Z `
7 Y- o* D) S3 p5 o$ U+ M1 m) ?) e<VirtualHost 111.22.33.44>
2 z5 Q5 m& E! f, e6 Y" L8 _. }DocumentRoot /www/subdomain2. t' r* B) Y0 H. j: K! c
ServerName www.sub2.domain.tld
" r- F* N) x$ X. i' Y...
+ e) r& I1 U% p</VirtualHost> / e8 W, z! h/ W9 `8 H
* ]8 R' B" G+ S<VirtualHost 111.22.33.55>! J# [- O1 j* H# ^. a
DocumentRoot /www/otherdomain1% H, l3 @0 p# p' K& @) {& _
ServerName www.otherdomain1.tld
- P2 L( C# E& v* U7 J...
! S" }$ q0 i9 }# [</VirtualHost>
5 s( H; z- v! E" T8 p. d ^" Y& V' k* [1 \. C7 x) [/ c. F5 K
<VirtualHost 111.22.33.66>
& m9 A+ M8 x% n& |. s- h. vDocumentRoot /www/otherdomain2- j9 q* @* ?" C5 y0 q
ServerName www.otherdomain2.tld
. N8 Y( W F% d' R...
3 {8 q; F. _- V3 F$ \( z</VirtualHost>
4 X9 C1 e# F8 }& J" I, F3 ` [6 n8 h( l' I; r2 X
端口型虚拟主机配置- X& M3 x! o# Q* h$ d
[, R0 O# h7 C3 h
Setup: 服务器有一个IP,+ g+ d+ \& C. |4 _5 a' ?9 @: o" {
; |1 u" {7 k: s111.22.33.44 www.domain.tld
7 a. q& c5 R2 R0 U! j- B: h/ D$ }7 r6 M( n6 I# y9 s
不需要另外的别名或IP,采用端口型虚拟主机即可设置一个配置有别于主服务器的虚拟主机。 6 d( s. G. [# H) Q Y' \! K) ^4 I
8 p& [3 b, [2 T0 z服务器配置:
' D8 i. Z* ] F...
6 \, N# y8 u6 i2 o# R- {, y! N
9 R3 ?) k4 s, L6 h2 ~0 B8 d! sListen 808 d$ p8 G; r2 F
Listen 8080
" D6 j8 i" \5 |/ E( `% H
3 d) ^( |7 A4 ~# d) zServerName www.domain.tld
+ u0 I e% q+ EDocumentRoot /www/domain
' K. K& a7 A( P% _9 v2 c9 }+ y- A5 F& e, e1 g- x3 D" o
<VirtualHost 111.22.33.44:8080>
+ w4 V+ T0 r: z$ x b- @. gDocumentRoot /www/domain23 k2 P/ K7 n* d4 P
...5 P/ Y( I9 u: @% a8 M, E
</VirtualHost>
2 R G |2 V6 i- o" ]
7 U6 y) [ O, c# H7 E: G+ c 7 c3 B3 N) V- N1 f. B
) J0 z# g. u+ `2 F$ \
来源:http://fengyu.china.com/Vhost.htm |
|