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

使用Apache Server设置虚拟WEB

[复制链接]
发表于 2003-10-12 13:37:43 | 显示全部楼层 |阅读模式
unix 平台与NT平台使用apache server的设置相同。以下重点以unix平台为例# m$ ~( k- ^+ M$ [' X  h0 X8 I
说明apache server的设置。另外值得注意的是,虚拟web的成功设置,有大约
$ E3 y7 T6 z: T2 s/ g3 Y# U- k50%的工作量是在域名的注册与解析方面。所以一般先注册好域名然后再做, Z3 Z/ P3 c$ w: O5 o, v/ ^
虚拟WEB设置。
& o# I* a/ e8 P$ o% P$ }$ ]
6 i3 J' a* C8 p8 n6 R2 Z' q& z一 、IP型虚拟主机4 J1 L, Q! Q0 _; p

1 k+ a7 G( Q" Y9 r& eIP型虚拟主机指每一虚拟主机对应唯一的IP。可通过多个物理网卡或虚拟网口实现多IP,Solaris2.5和Windows NT都支持这种方式。  [5 ^5 @/ J/ b
# b3 d/ ?# [! q; S  d
两种配置多虚拟主机的方法:0 }! k5 I" i. \# ~2 k/ M  a
( Z) @. _" ]/ g
1、为每一虚拟主机启动一个httpd进程。/ S3 B" v) I: o
( m* H8 ^/ I" Z+ t' e6 e
下列情况下使用此方法:
: R; l6 S# y1 ?2 }% ?7 _5 R" }( I! n, q! H& ^9 N
? 需考虑安全隔离问题,如两个httpd运行于不同的User、Group、Listen、ServerRoot,两者用户除通过Web相互浏览数据,无法访问其他数据。* \2 K1 y' l9 o1 R# l3 z
. C* I6 {( t: `2 j; n
? 能提供足够内存和文件描述器。; X7 x% ^, d$ q, I" {7 V, y

- N/ v6 F! Q3 i/ c: s设置方法:
: [0 o/ e! W; x6 C0 K6 j
' B/ t# _% k% w# i6 i9 S为每一虚拟主机建立一个独立的httpd安装,在每一个安装路径的配置文件httpd.conf里,用Listen指令指定进程服务的IP,如:
8 `. d" ?( w- G) {
# \& X. W6 t- T& [0 HListen 10.68.37.10:80
. s2 I3 i; L& a# A: G  z) S0 G6 ~) o9 d9 z' ~
2、为所有虚拟主机启动一个httpd进程。
2 W  O/ M" ?9 [, B+ d7 @/ O' f
4 R4 O4 w+ [% e$ b下列情况下使用此方法:
4 N# t* M# `  o- R% @) M" C% Y& @! [* u: l" G' d; {" G3 v4 J
? 允许在虚拟主机间共享httpd配置。
; H+ j$ L- H% k$ N1 F0 \: r4 D6 i, ?. }7 \6 n; ?
? 计算机服务于大量的请求,运行多个进程使服务器性能降低成为重要考虑因素。- ^: T- f0 x  r: c  D0 r8 l. O$ D
6 u0 ?# i0 c' H2 Z! e. }7 Y. x
设置方法:& r/ T4 h9 H* r" o, o6 s5 u0 `

  h% [2 H$ W/ Q* u7 r6 e在配置文件httpd.conf里,用VirtualHost指令为每一虚拟主机设置ServerAdmin、ServerName、DocumentRoot、 ErrorLog、TransferLog或CustomLog,如:
. D3 d8 v0 q0 g2 ~! q$ y) M. b( |: K- p1 f+ K& C
<VirtualHost www.smallco.com> #此处建议用IP6 V+ o3 s5 g2 f
ServerAdmin webmaster@mail.smallco.com
; V8 n0 \" j- u- SDocumentRoot /usr/local/etc/httpd/htdocs/smallco
- g7 Q& a4 B! C1 E. a5 w2 pServerName www.smallco.com #建议此处用域名8 z! s8 u$ @9 Q. h
ErrorLog /usr/local/etc/httpd/logs/smallco/error_log
/ o) r/ A: o- V' bTransferLog /usr/local/etc/httpd/logs/smallco/access_log0 x9 m& _# V9 g
</VirtualHost>
' b7 p/ ^( L  ^4 @" r$ F  C4 \  l$ q4 g; e+ I1 j
<VirtualHost www.baygroup.org> #此处建议用IP6 x7 p1 F' {, C  [, A
ServerAdmin webmaster@mail.baygroup.org; B8 \3 y6 n. }" z+ o/ g3 [
DocumentRoot /groups/baygroup/www
: U/ M4 J8 v! z5 p/ i8 AServerName www.baygroup.org #建议此处用域名
" g# Y+ n# J1 J7 HErrorLog /groups/baygroup/logs/error_log
% ^1 Y7 t9 v( W* F) ZTransferLog /groups/baygroup/logs/access_log2 Z5 i* s; E, X4 O
</VirtualHost>
0 Z; `+ V& o- R5 {7 N1 O, [( g. F% Q1 O1 z0 n7 {
同时要做虚拟网口或网卡的配置,在DNS也要做相应设置。# J7 O; B% N) t& K
- Y! l+ p+ I1 v5 s, v- F8 F, s1 Z
二 、名字型虚拟主机(Apache1.3以上版本支持); n' E, a- e# q, |9 z* h
: ^& q5 g6 d2 G& t" a
  IP型虚拟主机虽好,但不是最佳方案。它要求每一虚拟主机有一专用IP,在某些机器上难于实现。
% t& Q; y/ D, y$ ^
7 |) `$ g% W: H! z' ?名字型虚拟主机是指每一虚拟主机的名字不相同,但IP一样。它的好处是不限制虚拟主机数量,配置、使用简单,不需另外的软硬件。缺点是客户端必须支持该部分协议,最近版本的浏览器都支持,某些老版本浏览器不支持。但Apache为此提供了解决方法。. B' q/ B- {* ^6 a, r

* G+ H; Q3 y- u4 b) f9 ]6 g设置方法:4 d, ~, [% T0 X6 J. @- X$ z" ?  _2 {; T
+ y6 s- y0 S8 r1 J2 ]
在配置文件httpd.conf里,用NameVirtualHost指令设置虚拟主机,如:
& X+ F7 w( @( D; {3 q' M& ~% X6 ]4 u1 g% g  \3 t9 I) [, u6 e
NameVirtualHost 111.22.33.44
- u& C. g* E! i& ]8 U; @9 Z- U8 j0 B
<VirtualHost 111.22.33.44> #建议此处用IP; g9 h$ \% l) \6 }  y5 m7 n
ServerName www.domain.tld #建议此处用域名0 F3 C" c) H! J
DocumentRoot /web/domain! `/ b1 f2 |# I1 s( E
</VirtualHost>% ~4 B9 J/ B% g# H8 G

9 Z/ e; o# x) i7 H) L8 F同时,在DNS定义www.domain.tld指向111.22.33.44。! z, c: N7 m1 n5 J5 C  T

1 m8 N4 c3 [! R- X- w& c/ \注意:当在NameVirtualHost指令后使用IP时,任何使用IP的URL请求都是针对虚拟主机的,主服务器从不会响应一个使用IP的URL请求。) ]8 h( g$ O; P
1 O3 Q$ R. a' p
另外,有些服务器希望以多个名字被访问。例如,假设有某一IP的服务器,希望以名domain.tld、www2.domain.tld都能被访问,做法是在VirtualHost指令部分使用ServerAlias指令。如:% [3 b6 J: \! f9 Q) o, s

4 s( O: r. T  Z$ Y$ f, R! PServerAlias domain.tld *.domain.tld
: i- m( ], n- B7 M- K/ T- W# K- y# U9 w: ^# q  v
另附一些虚拟主机的设置实例。
; s% t3 R8 I/ d: i# g- }- V) ^. `  l) ~; F
 3 I% J- n& d% A" p$ }' G8 q

0 m2 E9 J7 K2 F9 A 
  Q9 y+ K+ Z0 n, D' O' x: @% S. f( e7 s( {7 [1 S3 _7 E/ J
附:虚拟主机设置实例
: ^9 a( G3 q  h" c! o0 @' |8 [$ y, W, |8 U! d$ |
IP型的虚拟主机配置) k9 f6 T) U* ~# y2 }+ H

0 P$ m! W+ b5 m7 A1 O  R$ x8 O, @Setup 1: 服务器有两个IP,
' }( ]% X' c7 n, y+ ^
% H+ Q; R+ C  V5 ~5 q, D111.22.33.44 server.domain.tld" s/ o5 X  z8 [8 q' [

- q8 L, B7 n8 N111.22.33.55 www.otherdomain.tld5 F* \, \8 Z! J" b* U

( F3 a0 f4 G' g5 i" S) fwww.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。3 [- p$ [3 @3 Y3 O( G8 @' H
  Q) R7 U7 o' h9 c; K2 z6 O
服务器配置:
/ U1 _7 n* V" M* p' y; ^5 r9 w9 O
0 i3 C9 G" ?) I2 ^: Z- V...
( [# B) m. u* \- G# `# d; n7 N3 Z4 t0 h, O* r+ b4 [
Port 80. v6 o" b; g5 v' e, J, R! _0 y$ z

# L! l- S7 ?; v- r/ e8 ~& QDocumentRoot /www/domain
; `, Z& q" E9 `8 H; o) ?" `* H7 ?ServerName www.domain.tld
6 d7 B# c: H" H+ w0 B<VirtualHost 111.22.33.55>. S! N$ r1 {) x0 ^# D
DocumentRoot /www/otherdomain. F6 k) C9 g/ Q7 A& x8 U# p3 L' ]
ServerName www.otherdomain.tld
2 G: P/ z# |5 q1 }..." v& f$ L3 N, V4 D  h5 i; J
</VirtualHost>  L! ]6 d! g" N8 D( ^: O
2 j# a8 J4 |3 W5 z: c  }
Setup 2: 基本同Setup1,但不设置专门的主服务器。/ w+ R4 Y. x; t6 ^/ L

- }, P' O9 l9 i( N' W! [9 j服务器配置:
0 o0 H0 Y! R! n1 N. c. H& I. z! V4 B* I1 a, U
...
. @4 d# f8 L) O4 L- F3 u4 A" k& l( O2 M1 M9 o5 U9 o. Y
Port 80
7 H8 z5 t$ g1 Q' u, z  q0 o- Y, P1 X6 D
ServerName server.domain.tld* o! l. j9 e2 o
<VirtualHost 111.22.33.44>& E) t: y$ y% C0 Q/ x* W
DocumentRoot /www/domain1 J" d9 G: k  m+ y$ G* i, S
ServerName www.domain.tld! E9 J* k. t& e  X  J
...( f- j8 a& ^1 o9 b. m
</VirtualHost>, `* h2 J) p: C5 H' V( Q' {
; `3 p" X& p2 b0 C
<VirtualHost 111.22.33.55>/ V) K+ D; Z1 J; {, a
DocumentRoot /www/otherdomain! q& V1 K2 ]2 n* D! w9 T
ServerName www.otherdomain.tld
$ m+ S) |/ T6 V...* y$ ?7 c5 n2 n* @4 `; D
</VirtualHost>+ I3 A* ^  ]2 x# e
6 c" K# l# g$ f
这种设置只有当URL为http://server.domain.tld时才击中主服务器 2 L- A* c" T% Q$ y; y# o
+ f2 B* w9 t5 }: o
Setup 3: 服务器有两个IP," F/ s4 R; q7 Q1 ^. {5 B8 O6 T" A" S
3 c1 `3 M' A6 m9 v' W; `+ n; ^
111.22.33.44 server.domain.tld7 V! ?: ~3 ?# p9 E2 `2 j& f* I
111.22.33.55 www-cache.domain.tld) |/ X8 z% q5 X" N% q
www.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。' n: h& h: }, o+ ~6 l5 w
www-cache.domain.tld是proxy-cache,端口是8080,Web服务器使用默认的80。
) O+ e" l3 F  B  b5 |
& a* T; ]" a+ \8 r, t* r服务器配置: 2 e3 G2 B" o! }, a9 ]! k" k

" D& v8 l( J' I2 B' H6 Z6 S  N...
5 ?1 Z: F' a6 a. f# F0 A" W
5 e$ U( P/ o+ b; G8 gPort 80
* Q- `2 z5 A  ^/ G5 k2 r' H2 D8 V/ J
Listen 111.22.33.44:802 q' r. O9 v+ ~! m* E: P
Listen 111.22.33.55:8080/ R* V1 z! U1 B9 Q9 ~" M: A

, }3 b4 H5 @* F" O- R( NServerName server.domain.tld! J7 `. _! P: }/ @
<VirtualHost 111.22.33.44:80>
4 B# H1 I! X6 k$ Z2 K$ {8 nDocumentRoot /www/domain
- r5 h2 f; B, t+ J5 o2 |ServerName www.domain.tld
4 G" E5 i- D7 G! V# N- P...
1 O& I6 r8 n, u6 q: }9 ^, j8 s, ^</VirtualHost>
% N8 @  e; u- X8 Q0 q: x: |2 M, c$ p
<VirtualHost 111.22.33.55:8080>
& v/ {0 M  @+ g% J: SServerName www-cache.domain.tld/ b8 H* V0 |. X9 H1 \/ E7 j7 V! g
...3 u; t& ]  T0 V* K& X
<Directory proxy:>/ w  \1 T, ^7 n$ F' o' h  ]
order deny,allow# K( ^: e% E0 ]( V$ v6 J
deny from all
6 M) Y9 Y4 `1 q$ h0 `" Callow from 111.22.33; ]" N: E4 p& N1 M
</Directory>
( H8 r& t; e! c5 c8 i</VirtualHost>9 ]( j7 Y- Z8 W/ K6 p' ~3 x
4 ~: A# W( T5 k* n( ]2 p
 
& k' m' {! t$ e+ e5 C$ N5 d5 I+ \
名字型虚拟主机配置% L( s  I9 W  R+ T0 o
3 u6 k8 H8 M2 \$ x
Setup 1: 服务器有一个IP,
! C5 I* w5 n" y, W" m7 x
# q; T9 j8 P$ J5 ~/ g" Z" e! x/ T111.22.33.44 server.domain.tld.   R( }5 t! M  e( G6 I# a1 d- m9 ?
7 p) i1 z4 _7 d
www.domain.tld和www.sub.domain.tld是别名(CNAMEs) 。
/ N& [4 T" |1 p# z) K+ ~9 f
, p' N( X7 H# i" x( |服务器配置:
' d; x+ x4 |$ _) s, W& |  x& U: R0 j! P, K  o6 Z
...& Z3 Z. P+ I) U& q$ g/ P

  Z. x+ h$ [2 l# uPort 80" F9 a% k- E; s5 ]: r0 W5 G. P

0 h9 W' |1 i8 L1 k9 rServerName server.domain.tld2 K( ~2 S# E, W
NameVirtualHost 111.22.33.44
- W! b1 M/ h* Q4 ]& U4 D- ^% r
: F- S1 W! a% R' z<VirtualHost 111.22.33.44>
3 D4 V$ J2 q1 S2 K/ ]7 B# JDocumentRoot /www/domain! T$ B( N! K; J$ b0 Y
ServerName www.domain.tld
/ M/ j& N7 d$ _3 N) z% a& {...5 N3 [& {) @# E7 f
</VirtualHost>$ J$ D( d8 T- ]3 W9 N$ B% h

  W  `' U2 y8 o# Y- b# A<VirtualHost 111.22.33.44>
. E) R0 F2 F* \+ V6 j; @! FDocumentRoot /www/subdomain
$ `6 p! N* r- ]& y1 wServerName www.sub.domain.tld
2 g- x6 g# H. {2 J5 C...& [9 C" t% f! I" E4 K. t6 J. v
</VirtualHost>
6 H( e, l8 k7 D  P5 b; f, M' n6 c6 V8 e1 Z
若使用IP访问服务器,由于 www.domain.tld 有最高优先级,被认为是默认服务器或第一服务器。$ q1 X# x3 P. Z' {6 c
4 \: P/ P  G2 g* ~: a* k- _! ~" _
Setup 2:服务器有两个IP,: ?$ y8 c' Y. p
! E. j2 ~2 I, |
111.22.33.44 server1.domain.tld 用于主服务器# @6 B8 R6 T% H0 G0 m# k
111.22.33.55 server2.domain.tld 用于虚拟主机
) Q4 {* s  y; x- R, t  ~" i别名www.domain.tld用于主服务器,' y% P; T/ G$ g. K  T& @
别名www.otherdomain.tld用于一个虚拟主机,
8 P  R9 ^1 e% A" Y6 d, b别名www.sub.domain.tld,*.sub.domain.tld 用于另一虚拟主机,' p1 w: U6 u/ I! j( t! h! A5 T9 ]: D

$ m8 F+ D- K1 J/ L  F服务器配置:
7 z3 \' e6 e7 s5 l0 Y6 s, c9 Y. I
...
/ S& N/ l2 U' W- _2 E7 `3 \+ u$ ^0 @
Port 80
6 X0 K( \; a" z' e5 D) n: u& z9 x9 ~- }3 f) E7 v
ServerName www.domain.tld: |. A! \+ r1 J4 l
DocumentRoot /www/domain  q( T& p- ?# h2 j- A. }
NameVirtualHost 111.22.33.55
) ^' R' X# F+ W. v1 Z( r9 y0 m. D<VirtualHost 111.22.33.55>
8 B  t! ^$ c1 h, o3 M' n' Q2 l8 QDocumentRoot /www/otherdomain: H' J! B" s+ a1 H3 B
ServerName www.otherdomain.tld/ p1 E1 t+ S4 G, A. }- o4 q9 c
...) X% N1 z3 y0 F$ L. O
</VirtualHost>
8 D% z8 M6 ~: j% y" W$ W  o) v5 M+ w" s5 q! h$ \2 M# p! W
<VirtualHost 111.22.33.55>
; R5 ]: @; i8 FDocumentRoot /www/subdomain
8 ^  |4 F4 F) b0 H) _' ?6 b7 `* RServerName www.sub.domain.tld
1 ^) f# X; M: K0 i4 }& Q4 Z" c* p1 WServerAlias *.sub.domain.tld9 o( P5 o. _) [. [( G4 S
...
0 N. w" q0 R; _  f</VirtualHost> 5 X$ o+ O" S- z$ t* x, K/ u5 M9 f

$ N1 |( U5 e) o9 ^& {8 w# e7 |: t混合型(IP/名字)虚拟主机配置
8 W" L2 \. g8 ^; l5 C% ]9 b8 a* F7 w3 f. u) R6 |6 V3 @  b
Setup:服务器有三个IP,
, ^/ z* r% G4 X3 ]7 `& P
# c8 |% u- h, H# q. K# Z+ @# r111.22.33.44 server.domain.tld 用于名字型虚拟主机
, P& a2 h  c" t111.22.33.55 www.otherdomain1.tld 用于IP型虚拟主机2 ~% ?1 _( W; o) Z* N9 |1 W
111.22.33.66 www.otherdomain2.tld 用于IP型虚拟主机
8 [  H7 o) k9 [: L9 p8 [* w/ k/ A7 O  \2 [/ `" e6 s0 }# l
服务器配置:
% m% S& t& c  v( t/ {8 u( G, T...
% ^/ q3 `2 l0 d2 B- I$ F/ J2 E& U% m2 e. l. f( Z8 g
Port 80
" ^) M0 K. i2 UServerName server.domain.tld& E: N) Q. o& j

$ j% s% M% a6 O8 l  B4 TNameVirtualHost 111.22.33.44
$ R0 K/ E1 i+ L7 W. Q& X6 `+ E7 V3 V/ M1 d9 J" n
<VirtualHost 111.22.33.44>5 ?: V$ d' q7 c/ x4 T- v2 m" g7 [. A
DocumentRoot /www/domain; B( p) v0 e5 R7 ~0 D4 x6 s$ ?
ServerName www.domain.tld
+ n$ a4 B9 @  W' O+ q7 t...$ }$ J) b$ E% X1 A1 C0 N' h0 y
</VirtualHost>' t1 W# Z/ _4 b% T( n2 ^& F( }* o4 K

8 D- w* \4 _- U& b<VirtualHost 111.22.33.44>
8 d) w+ |& c+ O* DDocumentRoot /www/subdomain19 v! C/ `& d$ v
ServerName www.sub1.domain.tld
9 J6 z4 S% E. i' A) ~( v! O6 \...* z& h) i" G( _, U) p8 ~) f( I
</VirtualHost> / n. ?: `$ A) m4 K  V
4 m0 U; c! A: b0 v5 F
<VirtualHost 111.22.33.44># V# V) t( v$ X; e; v: @
DocumentRoot /www/subdomain2+ J) y* i* r& A
ServerName www.sub2.domain.tld2 X9 D/ s. m2 {2 ]2 O/ [
...+ _7 n1 `& W/ P% y0 v) X0 V
</VirtualHost> ) C1 G) Y( G4 G5 i; \

7 [0 J+ f3 @  r2 W- K. U+ m6 _<VirtualHost 111.22.33.55>% J& D7 v; n8 I3 |! x  ?
DocumentRoot /www/otherdomain1
! O) v% l  z9 v/ d4 W8 d$ m4 k3 XServerName www.otherdomain1.tld3 [5 m1 O: j$ Y. N( z
...! d, m$ _1 G  _; m; N% P
</VirtualHost> ( z# y# V! e. D* u3 A: K$ e- A2 n7 ~
% A9 A4 g( n1 f4 c
<VirtualHost 111.22.33.66>& K) n/ {. ?: o! W
DocumentRoot /www/otherdomain2
# {" D; |4 s( U7 ?2 }8 R. h4 kServerName www.otherdomain2.tld* P$ H+ F' E' g) Q$ l+ l
...! p0 y8 ~; D+ B1 _
</VirtualHost>
/ L! J0 q* U6 D5 H7 J$ P
& c& z: m- ]! k) C! O端口型虚拟主机配置
" H9 m, r) X4 @9 ]$ F0 `1 g; v- v
( I+ J" {4 }; p7 [* ]Setup: 服务器有一个IP,  O7 u) [3 ^' W3 t

0 d' @( d# J8 n0 @) M* s111.22.33.44 www.domain.tld
! s; n" c. A5 z+ ~' A0 l5 t7 C( a& C
9 L8 e/ D% I, s" ?/ p3 O4 ~不需要另外的别名或IP,采用端口型虚拟主机即可设置一个配置有别于主服务器的虚拟主机。   ?! B0 m& a* y/ [9 x7 Y1 f" B, ~

- G6 E' R; {5 u, [+ b5 C; I服务器配置:
$ }& V& k5 F4 Z0 H" W) ^; B: J+ m...7 Q7 m* Q9 z; T' X
" z2 ^6 N6 V( X* k
Listen 80# c2 L( r! a0 w. F& ^- X- a
Listen 8080
: K/ A% l* J9 x. K# A- U% U* O/ i6 M/ X) \
ServerName www.domain.tld
8 i. C  e+ `9 o/ h$ F# K) dDocumentRoot /www/domain1 j, p" f2 ~& B+ n: |0 g6 d

+ K' [" e9 c) k% \<VirtualHost 111.22.33.44:8080>
) h1 m  o5 B8 v- q# g! H/ k0 {DocumentRoot /www/domain2
! E- N/ w5 j( X) X4 C...+ M+ o! i( ?. m% h) v+ ]
</VirtualHost>) u) \/ k* Y1 r% L; A4 b

. k, ?0 D& A. k# u. b5 } 
# C* t; H6 [1 h; I' t1 g( k' s$ }7 n1 E# Z+ s7 d. E  ^% Z
来源:http://fengyu.china.com/Vhost.htm
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-18 09:14 , Processed in 0.019566 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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