找回密码
 注册
搜索
查看: 3926|回复: 0

使用Apache Server设置虚拟WEB

[复制链接]
发表于 2003-10-12 13:37:43 | 显示全部楼层 |阅读模式
unix 平台与NT平台使用apache server的设置相同。以下重点以unix平台为例& D5 r$ x. M. P2 {+ ~
说明apache server的设置。另外值得注意的是,虚拟web的成功设置,有大约  S8 w' b1 X  {7 N; l  H. b
50%的工作量是在域名的注册与解析方面。所以一般先注册好域名然后再做
+ h2 A, Q/ N7 _4 G! H5 e$ s虚拟WEB设置。
0 g5 F+ r3 w+ S* S- t5 F; ?7 W: z. b9 P5 r# m) ?) F" |+ d8 @
一 、IP型虚拟主机
; X& |1 n2 B5 T( O1 j9 Y' E/ M4 m: E* p/ a
IP型虚拟主机指每一虚拟主机对应唯一的IP。可通过多个物理网卡或虚拟网口实现多IP,Solaris2.5和Windows NT都支持这种方式。
3 r0 I; b9 O3 _" [! }4 I/ Z8 l& m, c+ o1 i; E
两种配置多虚拟主机的方法:9 M; c9 F6 b$ Q' A  R- E' d; N
* O& b: p4 m# R
1、为每一虚拟主机启动一个httpd进程。6 b4 ^- c8 S5 g7 F
! k' r5 T2 f, \5 H: I, S
下列情况下使用此方法:
. X% D( I5 H. V, r% }6 L3 f/ g/ E7 ^3 i: u/ X9 m
? 需考虑安全隔离问题,如两个httpd运行于不同的User、Group、Listen、ServerRoot,两者用户除通过Web相互浏览数据,无法访问其他数据。# P$ q' v# j; ~
$ L) _+ ^* V  ~) A  M* H
? 能提供足够内存和文件描述器。
# W: z% E2 p" h' Q# Y: A* [* J  J$ D+ L4 [
设置方法:* f; s( c' A% ^7 j8 J% Q
. f6 H! l' B/ s
为每一虚拟主机建立一个独立的httpd安装,在每一个安装路径的配置文件httpd.conf里,用Listen指令指定进程服务的IP,如:/ C, J4 n. Y# }( n, f2 ?

$ f9 h& I7 E2 F0 F* I" A6 ^Listen 10.68.37.10:80
8 v. N3 T0 r6 |/ a1 z' R; x; C: D
3 R' o3 F/ j0 c5 i8 u0 t2、为所有虚拟主机启动一个httpd进程。
2 i8 f  C. K. c# P
2 X: \5 T5 E- T5 g5 k下列情况下使用此方法:
; |+ H- A$ F& ~2 M  p0 ^: P( W7 n2 t6 ?: O" f$ Q6 M
? 允许在虚拟主机间共享httpd配置。
) w  h. D' r$ Z% q
- r2 v' ^1 s$ J, j? 计算机服务于大量的请求,运行多个进程使服务器性能降低成为重要考虑因素。
  j* i; C& t6 {2 ]+ Z
$ ^  I$ B" b2 O8 r. x+ K设置方法:! A7 ]- p3 @. Y) x* r. B

  {  ^9 K* f0 H/ F/ I% @' N1 J. Q在配置文件httpd.conf里,用VirtualHost指令为每一虚拟主机设置ServerAdmin、ServerName、DocumentRoot、 ErrorLog、TransferLog或CustomLog,如:; T, K/ M* ~. s9 H) N' @9 L/ f

0 b, G) n7 U& ?8 F<VirtualHost www.smallco.com> #此处建议用IP8 Z3 K& X/ e- f# B' t0 w# y
ServerAdmin webmaster@mail.smallco.com! T& P2 N' h1 `
DocumentRoot /usr/local/etc/httpd/htdocs/smallco% Y. y, o; H0 m. e
ServerName www.smallco.com #建议此处用域名
8 p- w8 S& y' @3 Y( D& V8 s" |4 j2 VErrorLog /usr/local/etc/httpd/logs/smallco/error_log1 v  }0 i8 l$ P: h9 o
TransferLog /usr/local/etc/httpd/logs/smallco/access_log
5 }. @3 C, n: d0 l</VirtualHost>
+ ?/ ~! a% F  D4 n& G
' N- `1 M6 p% ^9 S; g<VirtualHost www.baygroup.org> #此处建议用IP
. E! [' F5 s2 Z8 YServerAdmin webmaster@mail.baygroup.org
# e% V0 F$ q9 wDocumentRoot /groups/baygroup/www& `' ^: U# O: D5 `, I( F; q
ServerName www.baygroup.org #建议此处用域名
: q7 w; i! z  a/ v" w9 b2 QErrorLog /groups/baygroup/logs/error_log3 e7 B9 J1 ^4 K3 f2 O
TransferLog /groups/baygroup/logs/access_log; ^6 L' I: R0 i8 {. U
</VirtualHost>
) A9 r5 P0 V, M' j! A
7 r" O. ]6 U' c, s. ^7 Y$ P- [同时要做虚拟网口或网卡的配置,在DNS也要做相应设置。
' G0 T9 R4 u1 Y
* h- F/ l/ s% _7 \: U二 、名字型虚拟主机(Apache1.3以上版本支持): C! R* E" H5 Q; N' q

. T8 F8 L' P# y1 L  IP型虚拟主机虽好,但不是最佳方案。它要求每一虚拟主机有一专用IP,在某些机器上难于实现。
- u/ s- c5 O5 b$ w/ z$ B6 M, N
& ]5 v+ c- Q  C% f0 l! H, H名字型虚拟主机是指每一虚拟主机的名字不相同,但IP一样。它的好处是不限制虚拟主机数量,配置、使用简单,不需另外的软硬件。缺点是客户端必须支持该部分协议,最近版本的浏览器都支持,某些老版本浏览器不支持。但Apache为此提供了解决方法。
8 I. ?, H' }' [, c- D' r( _# [2 m
设置方法:; u4 n/ c6 B1 _' c. w
0 P5 t& N& L* M: s) m; L: U
在配置文件httpd.conf里,用NameVirtualHost指令设置虚拟主机,如:
- }2 g( ~" i& k9 g1 o9 X
4 u' U; Y. V1 [2 e* U6 CNameVirtualHost 111.22.33.44
4 o6 l; w* B0 J6 W. D' g8 e) E" `$ Y& k" U
<VirtualHost 111.22.33.44> #建议此处用IP
) Q- a+ w$ R' b0 ]9 A2 Z1 pServerName www.domain.tld #建议此处用域名
* D! y+ h1 j" e: J# tDocumentRoot /web/domain
. |( P- b$ P. o8 A, {: O; O1 L2 y</VirtualHost>  Q. g" a* g% N

( Q' i' \8 B7 u  P同时,在DNS定义www.domain.tld指向111.22.33.44。; N7 Y0 c6 [6 k; }
( l0 k# I9 D0 [. I. W6 ^
注意:当在NameVirtualHost指令后使用IP时,任何使用IP的URL请求都是针对虚拟主机的,主服务器从不会响应一个使用IP的URL请求。
" v2 s0 g; i8 X, u, v
+ _1 g' l+ m" R. I. v/ i, [另外,有些服务器希望以多个名字被访问。例如,假设有某一IP的服务器,希望以名domain.tld、www2.domain.tld都能被访问,做法是在VirtualHost指令部分使用ServerAlias指令。如:
; t* x& S* g$ O  m5 d/ c: D" A& l$ T; D9 ?' w  O
ServerAlias domain.tld *.domain.tld
7 l' c: T; B7 h% l
) L5 i- b" g+ `, b+ f9 |另附一些虚拟主机的设置实例。 4 ]2 X: I# V; F
) [( p+ y( j1 M4 j$ ~# z3 t3 D, f
 $ t* [8 l+ c8 r/ [: r9 B# g

/ `, |+ A2 P$ L( {4 j3 K3 C5 o9 z 1 j" l) @1 L& x* Z! b5 L8 l# |

$ v& g( s0 K4 y0 @8 e( d' ]附:虚拟主机设置实例
% Z. ^6 l. n, m* e. G9 I' d2 _5 E4 g3 W5 S2 p
IP型的虚拟主机配置* E+ ]0 E: j1 E+ F: {6 j' ]
$ }  L: R" m# Q! }- J+ A4 \
Setup 1: 服务器有两个IP,1 s5 n( x0 S9 q
2 R, L- u5 [* z  e
111.22.33.44 server.domain.tld
8 h/ X9 r! D8 ~) d9 D9 f, t, E
; j6 b9 U7 S6 S6 y1 Z; k( e111.22.33.55 www.otherdomain.tld* T3 \# ~; L' T2 c& z( i

$ N% Y' _* {7 s/ pwww.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。
0 H- x; w/ _0 X5 ~
8 V, p! |) x' @/ I0 F: A  ]# Z- N' h服务器配置:# z) d& `6 P0 O# u- T6 [; z: O7 N
+ j) _, J4 [* q" ^9 |% z
...0 e1 y6 _+ ?: R! E% h9 N  S# T0 \
% T# I1 K; p/ o, b
Port 80
1 }1 u6 P5 L: e+ @0 D9 U1 R
" c8 {4 |! I! |DocumentRoot /www/domain4 }8 V% D( U: ^) \1 r
ServerName www.domain.tld
& H8 h8 l! N8 S: |+ l% w1 J; b3 Y<VirtualHost 111.22.33.55>
. m  D* u( d; g( g/ q' y/ B) YDocumentRoot /www/otherdomain
: T" X4 a8 p5 R- K. qServerName www.otherdomain.tld6 j0 o. G" G# R% u
...
& i8 ?# r& f9 ^. {" M, S5 R2 Y</VirtualHost>" V4 j" c0 G/ Q: |! z, z, k# T( ?- O

+ r3 u* H% r/ HSetup 2: 基本同Setup1,但不设置专门的主服务器。
4 ]* B. q$ G5 P; |8 t  B  L* |
7 s. N, M/ l+ g  q9 N& n服务器配置:
% }' u# u2 |# E- Q) N1 U9 c: @% R7 i
) p- [+ |5 s; `% n...
% `2 Z9 F3 V* V1 N; G+ }2 N$ U* {# l/ M8 t0 c- N) e
Port 80
7 C% |+ X2 \* }( ^* z* S( A
6 Z& |# l3 q( }ServerName server.domain.tld7 A7 \$ Q* X" u, n" l
<VirtualHost 111.22.33.44>7 i4 ~  P7 p; @9 W7 Z
DocumentRoot /www/domain9 |' m+ ^* H! G# c. }
ServerName www.domain.tld
( n! l7 r/ M1 S* B% l% o...
# X. i0 w- s" \8 O4 Z1 y0 G</VirtualHost>
! U0 k1 r9 G: v& X9 w/ @# i4 h' ]- Y* H; R8 C
<VirtualHost 111.22.33.55>- \5 M/ J& h: P7 [
DocumentRoot /www/otherdomain) D: B' G- i' p/ X% n! ^$ G4 [
ServerName www.otherdomain.tld
! h8 s! {4 P. a2 F# d/ {...
7 T! ]3 Q  j0 Y. f</VirtualHost>6 {. R: W$ K' E$ }9 p) L

6 M* l+ M/ R) F这种设置只有当URL为http://server.domain.tld时才击中主服务器 : w, m6 Y& `/ N8 q8 \7 C/ k

! c. ^: A2 @* p# ]; }6 ?Setup 3: 服务器有两个IP,, a" J$ o% O4 e4 W" ~

4 G( w! K2 G. g4 t$ U111.22.33.44 server.domain.tld1 {  k- e8 y: g. t: G7 [  f1 x* r
111.22.33.55 www-cache.domain.tld
5 @7 p' }: J% ]. K. A+ U0 d+ J6 x' Bwww.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。9 Q  e- Z7 h( h5 L( x7 }
www-cache.domain.tld是proxy-cache,端口是8080,Web服务器使用默认的80。
3 P4 U7 I2 Z' t" y) _( @" w3 r' t1 M& b. n. E: D' y% T3 L
服务器配置: & _0 [' e& L3 g9 w- G+ ~' z

' v5 O$ ?+ H- J  i7 [8 P  r...7 E$ t% c& T3 B0 r& J. }

& Z2 j" [; {- D7 G1 d/ @: n5 r5 ]' mPort 80
/ j$ D  X0 `( W  f6 v9 [6 s
- O# x6 d/ u  yListen 111.22.33.44:80
: E; _0 F' g9 T$ }  O2 O6 fListen 111.22.33.55:8080
+ W' M* ^* d( b! x- Y( r* z7 w6 ~8 k- ?' v+ m9 F; |
ServerName server.domain.tld+ Z% M2 f2 x3 Z. l3 ^6 D/ G
<VirtualHost 111.22.33.44:80>
% L- n2 c" y+ P4 R3 G& wDocumentRoot /www/domain
0 k6 Z1 n; F* X9 P: }ServerName www.domain.tld
3 r- V0 w9 V; C" C  Q  }- R5 I...; B3 M( O7 O7 K/ h4 d( l  S
</VirtualHost>
6 H4 r# t! `# A/ W. N# X& I' n% R2 K' z! k2 F% }
<VirtualHost 111.22.33.55:8080>2 i7 n7 K7 \, p: f1 E! t
ServerName www-cache.domain.tld
: r- X4 r+ ]; }9 \+ |' }...8 b) Y$ P+ s5 E8 E; p5 e9 O8 t
<Directory proxy:>, R$ t4 U* [( Q! ~0 b
order deny,allow" P0 m3 C$ \1 E0 A  h) ?
deny from all3 _% R  ~5 l# f$ C# k! r% s8 t
allow from 111.22.33
8 N, S% }% f( M* g</Directory>
$ X3 x8 G4 ~& ~- z5 E+ ]</VirtualHost>
. e3 x6 H7 c0 F; Y  I) Z' V" ^: v: x5 o, k& M. z
 4 c- y9 x% \: a+ m) {+ F+ l
, {' [& O8 B" H# J8 X0 w
名字型虚拟主机配置
% @+ D. e$ I* p9 r, J+ f) _$ Z. Q
Setup 1: 服务器有一个IP,. A% a7 }5 e) q2 \& ]0 F% Z1 F
, q4 `& M! ]+ Y: G
111.22.33.44 server.domain.tld. , M) k" y& `" u& E
7 ?) Q' U' J( A" m* d& y  ^7 `
www.domain.tld和www.sub.domain.tld是别名(CNAMEs) 。 * Q% g7 ~$ _" X0 a1 [& p* k
' l7 ?+ n8 d, |% T' Q% `) J
服务器配置:
* B  S/ M  y, x& D# p2 S2 p
: R1 b: w6 O* c7 c" `  y' N...
7 W. F# Q* L, X! K) Q9 j0 s
. B) v6 i( A; b7 i3 DPort 80
( t# e; f8 y" J+ R. Z# O
" X! `  u. e( f0 ]  zServerName server.domain.tld
6 E! B" l% [! _, bNameVirtualHost 111.22.33.44 , b  c6 i( G- `: N2 Q

( J7 m* {' h# b4 |<VirtualHost 111.22.33.44>
, {6 r1 K5 O- S6 j! N! i7 _DocumentRoot /www/domain9 d/ @  z8 L( B4 m. C- e
ServerName www.domain.tld* V3 C" d: _3 `1 A& \
...
+ B+ w" J7 Y' v6 O" k% m9 l5 q</VirtualHost>
9 z/ G3 u1 `, o9 d% M
0 C' r2 `3 ]4 V# J* i<VirtualHost 111.22.33.44>
* N! l( A: v. F) I' w5 zDocumentRoot /www/subdomain
6 Z$ O, f0 A3 Y3 h5 BServerName www.sub.domain.tld
& [0 J' T/ ~4 [8 `  @...' V  f2 u. g! D, j3 X# ^  w8 V$ R
</VirtualHost> $ j5 ]6 d, K% P

- B+ ]9 y0 \* g  j若使用IP访问服务器,由于 www.domain.tld 有最高优先级,被认为是默认服务器或第一服务器。
( |; F: X9 [0 B: Z: z* V" p$ ~3 F. E* o3 F8 h" Y
Setup 2:服务器有两个IP,
; y$ U. h: k6 x& E9 i& I- {4 b* P: q" m+ Y7 O
111.22.33.44 server1.domain.tld 用于主服务器, i* n2 W: D  i7 ?$ k
111.22.33.55 server2.domain.tld 用于虚拟主机
6 G- f9 m8 Q. Q. c  z6 G别名www.domain.tld用于主服务器,
, g! ]; u+ }, S2 y别名www.otherdomain.tld用于一个虚拟主机,9 o) B- `7 b; u' }2 ?& g6 J7 n. |+ X* U; }
别名www.sub.domain.tld,*.sub.domain.tld 用于另一虚拟主机,
; u. x+ [+ ^- p/ J7 z0 ^7 n$ H; A
服务器配置:
2 b! F# [+ {* m: c- G; V7 }& n1 q" C$ `' R: H
...
. I7 T- Z& {; k# [9 R7 E  l
: W5 ]. o$ W% F, D1 h$ z5 GPort 80
  `) K8 j) Q& N$ B% B2 W! f/ p" q% Q
ServerName www.domain.tld8 T6 s5 p6 T1 j/ t2 e
DocumentRoot /www/domain
# k8 w+ {" ^  i5 l! m# pNameVirtualHost 111.22.33.559 o1 B5 B6 \, P4 M
<VirtualHost 111.22.33.55>8 \: s  g. N% X9 d
DocumentRoot /www/otherdomain
% O' S- `) i7 \- NServerName www.otherdomain.tld: x  j6 V1 V- g2 C* U5 F
...  q7 G7 f* v+ N0 @* e3 O2 c9 o- i
</VirtualHost>
2 o% \$ ?- H; K% C& s6 j8 S, A0 [  K$ o# Z& A6 X' s
<VirtualHost 111.22.33.55>! W9 v1 _% }7 S% Q+ R: s7 a- Z( a
DocumentRoot /www/subdomain6 ?. g, W$ F4 n3 I- @
ServerName www.sub.domain.tld7 `  c3 W( J: C: H
ServerAlias *.sub.domain.tld3 r" ?% ^! V% I( S4 u6 m+ M
...9 r7 u, X4 f. k9 C3 w5 S9 N8 R
</VirtualHost> 4 ?& n- `4 n( K9 ~- E8 G
  c, D" w2 N  o
混合型(IP/名字)虚拟主机配置! h/ d  S- @+ B1 {

4 x4 N1 \5 l& ~, l! HSetup:服务器有三个IP,
8 ]" D$ N/ f5 C3 q9 |, H6 L3 U, @
111.22.33.44 server.domain.tld 用于名字型虚拟主机# F& H7 n& b) c7 Q
111.22.33.55 www.otherdomain1.tld 用于IP型虚拟主机5 |1 J$ @8 l6 H6 [& ]0 I* G
111.22.33.66 www.otherdomain2.tld 用于IP型虚拟主机
) F- S$ v1 M; ]; y* _6 `1 T
+ p4 U% D; T) m4 ]! h服务器配置:
' E" o& A6 r% @) `) V' F$ K. B...
' K2 X7 P! s0 C  f- Y9 A
& N: W, V( W* G4 l/ M: O1 K3 c' y/ U; qPort 80
- p; q2 X: T2 K2 `4 GServerName server.domain.tld
1 n  l+ ^8 n, g# A/ T, {
" j, W# b$ d1 G& e5 LNameVirtualHost 111.22.33.44
) I* G% u1 e2 A+ t% D9 k! H' y, i' W: U8 i8 F; T8 l# F8 `
<VirtualHost 111.22.33.44>) Z6 x& w# {: Q/ m4 g9 |& B( o
DocumentRoot /www/domain  v5 u# _! ~% l8 e1 s
ServerName www.domain.tld
. |! b0 S$ ^4 Z7 B) w7 O% @0 n% s...
4 i2 t4 }) W2 Y3 L& R9 c</VirtualHost>
! m. V% D( N/ V4 z: q2 B- o# f8 o' _0 T( `
+ I" S' R9 a8 _# e; q. \6 t' k6 W" `<VirtualHost 111.22.33.44>, h7 W+ ^2 O7 _' ~3 A/ S1 M
DocumentRoot /www/subdomain17 q; G/ @3 V9 u+ R
ServerName www.sub1.domain.tld
3 o' k( z% F5 J7 {' b5 D) D..." N6 S& P5 W, Z5 _6 v
</VirtualHost> & v) L$ ^$ m( L( D8 o, {6 _" s

2 u2 L# }' y! K9 Q8 @# T6 c, F* x; o<VirtualHost 111.22.33.44>3 _+ A4 T9 o4 _; A
DocumentRoot /www/subdomain26 K2 a( n/ r; J- }% B9 J9 R8 S
ServerName www.sub2.domain.tld
0 o+ N1 w* v5 Q0 n* X...- b: R/ R& k4 m
</VirtualHost> & y$ u) v/ d1 g
! c8 m# q$ s& a6 ]1 g
<VirtualHost 111.22.33.55>; r5 w: k6 g# `% K1 }# K' W( ?
DocumentRoot /www/otherdomain1$ S1 \0 Y4 z# s" }
ServerName www.otherdomain1.tld1 A1 Z* ^2 x1 y3 ?, z$ c; p
...
$ k/ Z9 W5 l* v1 M" n6 H. W# B8 h</VirtualHost>
+ t; F+ k3 [- \3 W: }9 y) {$ A" r' Q4 t8 p6 I0 M" T2 P" S" Q. H+ j
<VirtualHost 111.22.33.66>
# c2 T7 u( d9 h7 f9 b% Q# `DocumentRoot /www/otherdomain2
2 S/ M) V  _( z* P* @; F1 _& a6 J' ^ServerName www.otherdomain2.tld0 Q( r" k* t4 W9 q. E; _
...
$ j) i- \8 Y; A9 B$ I</VirtualHost> 1 v' k3 y4 [+ q& }: N1 H
0 X3 R  y* p5 M
端口型虚拟主机配置( b! u% Z( l' s  o

" v  z/ t# _" G6 K" X" G0 Y$ i& TSetup: 服务器有一个IP,
( s. O: \& K9 q' I$ W0 e0 L
1 \. \% Z) {6 L; r3 _% ]111.22.33.44 www.domain.tld/ Q% k. u" {" N9 O1 ?
! k% l0 G' X% }9 g9 j; [
不需要另外的别名或IP,采用端口型虚拟主机即可设置一个配置有别于主服务器的虚拟主机。 : G9 O, q! D) v* O& ^5 X1 K8 d

# E" O/ L# R- I* B/ W$ O服务器配置: ( y$ N- U0 L: |. T, ^+ ?  Z- H
...& e6 T* K; O, T3 [8 \! n) D3 T" `

+ g5 `+ D- {0 M, ?" Q% x5 OListen 80
  O  j8 u1 A2 p4 i6 g! m9 z2 f. IListen 8080
4 U7 J0 B2 M' N/ a: @% `
( |/ z" `" ~$ j( R8 ^8 L1 oServerName www.domain.tld5 Z0 D6 M+ p5 K8 n; G; O" M! [
DocumentRoot /www/domain! |+ y% c  K, _' u8 d) U4 E
% d# G# R" }7 g! Z
<VirtualHost 111.22.33.44:8080>3 [% C! _- _) J
DocumentRoot /www/domain2/ v! k, |' L& W- p
...3 z" y3 |7 x% r
</VirtualHost>
8 ^8 c$ H0 k+ ]# X2 E" E# Z$ o9 h1 V4 m* M* i( D( E5 ~
 + J* I  m, X1 a8 L

) b1 ]& |- \  Q1 a- m: d! n来源:http://fengyu.china.com/Vhost.htm
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|宁德市腾云网络科技有限公司 ( 闽ICP备2022007940号-5|闽公网安备 35092202000206号 )

GMT+8, 2025-5-5 06:54 , Processed in 0.014688 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表