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

使用Apache Server设置虚拟WEB

[复制链接]
发表于 2003-10-12 13:37:43 | 显示全部楼层 |阅读模式
unix 平台与NT平台使用apache server的设置相同。以下重点以unix平台为例0 q; I: }- w& F' X0 p
说明apache server的设置。另外值得注意的是,虚拟web的成功设置,有大约+ ]0 k; n9 M$ }3 p1 l  W% Q  V
50%的工作量是在域名的注册与解析方面。所以一般先注册好域名然后再做& x3 p$ G* K9 e/ Q- X
虚拟WEB设置。
# v5 _$ }/ I3 S, _2 m# v. e& k8 m1 A
. y$ ^4 Q" I* {5 G" [* s) K! y一 、IP型虚拟主机+ o4 ?6 O" X9 X7 _
9 G( B1 R7 c6 t4 X7 o( ?. S/ h! v; \# C
IP型虚拟主机指每一虚拟主机对应唯一的IP。可通过多个物理网卡或虚拟网口实现多IP,Solaris2.5和Windows NT都支持这种方式。
+ a5 H" c" ~: W- H
+ I6 s8 w/ ^5 q1 K6 h两种配置多虚拟主机的方法:6 h3 \" \' ^7 D4 O5 X. r1 O
8 |7 W  @$ l0 t9 G9 I3 o& Y+ m
1、为每一虚拟主机启动一个httpd进程。9 y- A  h; `! q5 i
+ i# t# p; @* h4 i: B% Y
下列情况下使用此方法:
: X' b8 v- T7 h/ P6 c" ]! D8 @$ b4 N
% T: G2 E& |1 L; ^3 ?? 需考虑安全隔离问题,如两个httpd运行于不同的User、Group、Listen、ServerRoot,两者用户除通过Web相互浏览数据,无法访问其他数据。
2 A% V! r+ g" D+ c* o- @" Z/ t' |( G* w5 v" `
? 能提供足够内存和文件描述器。( E' D  C' e* `7 O

8 e1 Q, [  Y' R! f设置方法:
' l  y1 d6 k0 G
" t% \, t3 w/ C; {5 I为每一虚拟主机建立一个独立的httpd安装,在每一个安装路径的配置文件httpd.conf里,用Listen指令指定进程服务的IP,如:
2 V  E. |* E' P7 U( d, ?
2 t" i4 E* y+ ZListen 10.68.37.10:80, G  ~5 ~( l" W3 R* Y0 m
/ {& O3 u- i* c( n! R4 T
2、为所有虚拟主机启动一个httpd进程。
1 M8 l$ J6 N/ p" e
+ G! J2 A0 z9 s3 S7 h- j2 \" O下列情况下使用此方法:6 G1 ]2 j6 j! y" Z

; r( e; a3 `+ C, |3 s5 B? 允许在虚拟主机间共享httpd配置。
# H$ O( w% y% w3 P7 c: ^( f8 k' Y* y- [
? 计算机服务于大量的请求,运行多个进程使服务器性能降低成为重要考虑因素。! w6 N2 v4 A7 t( N6 j$ l
$ b  O4 i( E0 [5 e" O, N9 }
设置方法:5 O6 g1 p- I! `" t, q2 j% Z

& T8 _7 `& Z9 C5 B) H在配置文件httpd.conf里,用VirtualHost指令为每一虚拟主机设置ServerAdmin、ServerName、DocumentRoot、 ErrorLog、TransferLog或CustomLog,如:
2 P. o1 |2 c/ L" w  C" M2 m5 }* {. J2 c. ]* ?
<VirtualHost www.smallco.com> #此处建议用IP
9 i1 d2 ^! O% H& ~ServerAdmin webmaster@mail.smallco.com
9 ?) t" Q( O8 ]) y5 U% r: pDocumentRoot /usr/local/etc/httpd/htdocs/smallco. B2 Q; Z: Z$ U8 [: J: g# d
ServerName www.smallco.com #建议此处用域名- A5 P  T0 o& I- ]6 b
ErrorLog /usr/local/etc/httpd/logs/smallco/error_log
& y  \: S; B) R, b1 J1 z# O8 E. K5 JTransferLog /usr/local/etc/httpd/logs/smallco/access_log
. u  y3 _9 h. s3 b8 `3 A0 g</VirtualHost>
0 s; z- `* S* J5 c' U  {; P) O* g% N8 W) }8 d9 D
<VirtualHost www.baygroup.org> #此处建议用IP  {' C2 r7 J2 ?  R# u( [* m/ y
ServerAdmin webmaster@mail.baygroup.org
) I6 W  a1 z# Y( Q: |8 K% v) W  iDocumentRoot /groups/baygroup/www. c$ J8 Y, T/ `1 r
ServerName www.baygroup.org #建议此处用域名7 R1 ?$ [/ Q0 V: |1 Z
ErrorLog /groups/baygroup/logs/error_log# a! Z3 k. T1 @& W8 D
TransferLog /groups/baygroup/logs/access_log; l  _" S  E9 e' N9 Y2 X% D
</VirtualHost> + G4 B# V3 U) B
, g4 n) g7 Q, k6 @) o
同时要做虚拟网口或网卡的配置,在DNS也要做相应设置。
+ c: U6 r" Q# \2 Q) m# Z( W" T2 m2 j4 b! p* j6 T, `
二 、名字型虚拟主机(Apache1.3以上版本支持)
7 O1 h/ L( R3 [( h* i% y) q; k& {- O/ [
  IP型虚拟主机虽好,但不是最佳方案。它要求每一虚拟主机有一专用IP,在某些机器上难于实现。
: P% I$ e8 A4 V; l
; I3 e# w! A% Y. c' n, ]名字型虚拟主机是指每一虚拟主机的名字不相同,但IP一样。它的好处是不限制虚拟主机数量,配置、使用简单,不需另外的软硬件。缺点是客户端必须支持该部分协议,最近版本的浏览器都支持,某些老版本浏览器不支持。但Apache为此提供了解决方法。
) d5 t* q2 m! D( ^  m2 }
6 W$ t/ N7 z/ h) p5 Z设置方法:* g7 g7 R. y% S9 {7 s
/ R/ V4 F# ]+ b1 Q  h! F% L/ T
在配置文件httpd.conf里,用NameVirtualHost指令设置虚拟主机,如:/ f  `0 z5 q" X* F) F

1 C0 s2 q6 ]- i7 R( RNameVirtualHost 111.22.33.44( z" D9 m# m8 P( W

% e9 b. P9 W$ u<VirtualHost 111.22.33.44> #建议此处用IP+ k- H! a# e4 ?9 }
ServerName www.domain.tld #建议此处用域名2 D1 t0 w+ ?* L4 m, v: T! u# }4 N
DocumentRoot /web/domain  u$ _1 Z9 T" b3 k" Q8 F( Y1 n
</VirtualHost>. E; ]" P, d7 `4 w0 x1 C
' W0 S& @1 L8 N) j# l* F8 u* F
同时,在DNS定义www.domain.tld指向111.22.33.44。
" S1 |/ ]" @4 w1 C3 S
& T" h! W) m$ l3 U2 _/ i/ m注意:当在NameVirtualHost指令后使用IP时,任何使用IP的URL请求都是针对虚拟主机的,主服务器从不会响应一个使用IP的URL请求。
; F( j5 I9 N$ }& l; C5 T) q  r. j$ D) y! w. |& r% S
另外,有些服务器希望以多个名字被访问。例如,假设有某一IP的服务器,希望以名domain.tld、www2.domain.tld都能被访问,做法是在VirtualHost指令部分使用ServerAlias指令。如:
! h+ P, Z) T% M4 p, ]: S6 e8 }9 J! }! R2 C9 [/ {: L2 l3 R
ServerAlias domain.tld *.domain.tld
: \/ R  U" L, c1 A
' h; j" {4 {& L* l" p8 d' [) L; P另附一些虚拟主机的设置实例。 3 W1 A' t: [6 e+ @* a
3 F4 e0 d1 N, }6 {* `6 p
 
! x+ M$ @( |- n. L& d- T; K
& r- ]: n0 |2 t$ y/ K4 D 
# @) h9 Z( ~( U; e  x$ E# k' N- j& o% d4 [, Q3 I7 C! x% l
附:虚拟主机设置实例
: I+ Z/ X! c% ^$ g7 C- U4 o! }
" J+ R9 {7 Z0 g5 P/ x" NIP型的虚拟主机配置
7 m5 x9 h: P3 D7 w" g' g
. L: X: d. ]" dSetup 1: 服务器有两个IP,6 Q* R0 x3 c; }- w5 _# r

% N( [8 I6 ^  m* ~# H111.22.33.44 server.domain.tld
1 T) [3 C! G0 d% [6 Y. P' s
+ d; R4 ?  B" v. d. V  L/ Z, }111.22.33.55 www.otherdomain.tld
: ]& @; s) f- v" k" s4 `/ N, t
8 T0 Z0 s* |& a1 x: bwww.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。
  Y1 H1 S( L6 \% t2 ~, X3 u
* U5 Z) P* ?/ p服务器配置:
' J9 a, t. ]- `2 D) t2 P, S5 `9 B
...8 U0 @) X, P/ U" _. |3 T# [

$ X9 ~# K! v4 cPort 805 U: Y( f% P8 T- \0 h& M; r( J5 g

. W0 c5 t8 ~% p! o& S$ x. O+ E% yDocumentRoot /www/domain
, f/ Z) Q; J. N& Q& y! v: r: YServerName www.domain.tld
% d8 P' B7 ]; Q( }. x3 Q1 i- E<VirtualHost 111.22.33.55>
8 ^, v- [  q0 lDocumentRoot /www/otherdomain) F: H+ z+ T; r- D! H9 L0 ]0 z# P
ServerName www.otherdomain.tld
2 l- ?0 q& ]5 a+ _9 ]5 [  _0 h...
% d: ]  K9 X; }: S</VirtualHost>
) _( p6 \% m2 k, h! I, F& K& E  w5 `
Setup 2: 基本同Setup1,但不设置专门的主服务器。" O) k7 a! i1 Q9 \3 K* e
/ K0 A" n5 `" l8 z  @3 j" b
服务器配置:# l- ?4 A3 g) ^1 D2 i. M

- d+ B. n) O  z. [. p  W5 W...: r" y% V- E( U5 g- i; x
5 V5 V, A9 D, `& }; `- b0 j+ p
Port 80
8 |; d" ^6 `% e* o
( g$ ^6 l3 w8 f( X5 fServerName server.domain.tld
2 J2 d0 o- V  I1 E5 w5 q8 V' j, t<VirtualHost 111.22.33.44>$ K# [; }/ b( W% g1 ^
DocumentRoot /www/domain
5 M; E6 Q, g  ~1 l, [8 J9 AServerName www.domain.tld
6 F. e. E7 v* v; }& E...
! E8 D+ X% i% Q4 R</VirtualHost>* y- L* B, ^! A: {
5 Z" i% ?" `8 P
<VirtualHost 111.22.33.55>
. F8 C0 N* G" h2 e. k1 e% d+ ]DocumentRoot /www/otherdomain
5 ]- T: p! X% @- ?2 _ServerName www.otherdomain.tld6 ?' V) s- O; W/ X* M4 L) M
...4 ]2 _8 T: l' n( j9 c  Z
</VirtualHost>
+ J5 P* h3 h, j
: F: p. h) ~, M2 P这种设置只有当URL为http://server.domain.tld时才击中主服务器 ) J4 A8 ]( y1 ^( r
& O7 P% C3 i& q8 {( }- T8 R5 O  {' K
Setup 3: 服务器有两个IP,- c- Y5 I% q- e; ]: |
' s: V" \' t* S# G2 C
111.22.33.44 server.domain.tld
8 ?1 H# K9 y( L9 s. P; U. E9 g111.22.33.55 www-cache.domain.tld( H$ d) U. D' r' [4 e
www.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。
* k4 a; ]) F# m) f4 Y  H  I' @www-cache.domain.tld是proxy-cache,端口是8080,Web服务器使用默认的80。9 k1 Z' ^3 D, }; G

3 L2 Z+ q1 p% x5 a) U服务器配置: 8 m# i# O1 [9 t: @- L- f6 X
* Y% L' s4 U, z7 G6 L+ p  {
...2 L9 y2 L- U: ]  X5 t7 c

" x( ~$ j  E$ F; I3 P2 RPort 808 _' [* p2 s8 I+ x8 D) F
' {* k. U: a; ~8 U1 x* m: F  U0 d
Listen 111.22.33.44:80
: L6 Q+ Z4 I2 ?% d1 OListen 111.22.33.55:8080
7 X7 E. d7 Q# l: ]: g
8 ]9 v+ [) P$ y6 E  D' pServerName server.domain.tld2 i) W" `( f! \- W& X* b( d
<VirtualHost 111.22.33.44:80>
7 i8 \2 k  M/ A& M9 z* O" F5 jDocumentRoot /www/domain
2 f. r8 b  |5 ]; U9 g8 |7 dServerName www.domain.tld
1 f, z* M3 K. e3 S+ u) B...
& }! m6 v% m- ^3 w</VirtualHost>
$ f' v9 T: m& ~0 ~$ Y+ i9 ~) W* Y. `- F5 \. c! O& r& N3 ~
<VirtualHost 111.22.33.55:8080>
& G" i5 K0 [# ~ServerName www-cache.domain.tld; m: ]5 j* I: A
...9 |# X; t9 k& q9 f$ X. V2 z
<Directory proxy:>
& C* w& m  _6 x$ x$ Y8 f; Lorder deny,allow1 [( N7 D( w7 y, C$ G0 ]( I  g) ~
deny from all+ b' l, D; E2 q
allow from 111.22.33
" q; D$ @0 I2 b+ Z</Directory>
# S# [( O% v; Y" N; t. Z</VirtualHost>, H9 H' N6 R2 N. f; ~) l9 V0 F

6 q3 ~. B$ ?  p* B 
4 N- l! e& Z6 Y% q; v. m+ q2 ]! l1 N
8 z; ]( T; B7 b& o8 k6 n名字型虚拟主机配置
; H% o& n* a7 B1 [7 O* {
- U! O; s2 S7 W5 iSetup 1: 服务器有一个IP,
2 L9 {) L  I8 D0 c1 ^2 Q. p
5 D/ Z, D# }8 `3 k1 A% J- R111.22.33.44 server.domain.tld.
3 {! ?: o' l- m
* s7 s8 \7 x5 ]www.domain.tld和www.sub.domain.tld是别名(CNAMEs) 。 , m$ `3 n* m# [
5 S. q5 H5 |1 H- h( V) {
服务器配置: 9 w; S' {" x" O, s

. i: f* t6 h* J# ?3 C, w...2 S6 \, e' P) v# |2 p% ]: D8 R

. f3 j# ?( y3 kPort 80% C  M& o9 B/ d% y( U

, V! O$ G# {) B1 @, C( D5 k" x. eServerName server.domain.tld  c& a8 ^2 p5 d. S/ r
NameVirtualHost 111.22.33.44
4 \; c$ J! P5 x' l% w- G7 Y, e0 p( V" P1 R1 Q; X
<VirtualHost 111.22.33.44>
9 u: T% Y. \9 T) MDocumentRoot /www/domain7 `4 j/ }% `0 R4 ^
ServerName www.domain.tld
$ w- |5 A; {7 F, Y* M: B1 C...
: i0 X( J9 R5 M, }+ F0 [</VirtualHost>. a" I8 d9 p+ C9 F0 z$ [* Y

/ e7 O) F% [9 D2 |<VirtualHost 111.22.33.44>& |0 R2 ~! m+ ~3 _
DocumentRoot /www/subdomain
* t6 c% h- _! X. h% R# j- J$ QServerName www.sub.domain.tld5 S& ?, N# x- Z
...
8 x8 y0 Y9 z  j</VirtualHost>
) ^) G* z7 ^* @2 j7 o; @9 t9 t
2 \- G4 S3 C, [: Z" b" l$ }若使用IP访问服务器,由于 www.domain.tld 有最高优先级,被认为是默认服务器或第一服务器。; f1 @" Y! R6 g) X# o( I0 [) m: s
0 {- D" V: y4 ]; g4 v$ c7 t
Setup 2:服务器有两个IP,
, x2 j- ^% f7 G! b7 d% _/ {5 Q5 W1 _) W. r/ h6 f3 W! l
111.22.33.44 server1.domain.tld 用于主服务器3 U! o* g+ u; k- \" S. T
111.22.33.55 server2.domain.tld 用于虚拟主机
# K- i' C! q1 G: G别名www.domain.tld用于主服务器,
' S' f! ?' d0 \! l* U+ R别名www.otherdomain.tld用于一个虚拟主机,
$ T1 t9 W2 \4 G" X( i4 e$ S/ w8 F别名www.sub.domain.tld,*.sub.domain.tld 用于另一虚拟主机,
: q+ f6 R+ y" S" \5 A+ l4 u' l! e( P: y/ W
服务器配置:
: _2 E- c, ?# D
/ ]9 B) z/ X/ [" J5 Y. |...
0 Q- o# h9 W& S( \. k& h
* O% {( |+ {/ j4 h8 Q1 mPort 801 H  }3 V! U8 Q1 g) Y1 \

; L  Z. r1 f7 g, Z# \ServerName www.domain.tld
$ J+ R: i' T' L, aDocumentRoot /www/domain  P/ K+ _0 v7 r; D, @* V1 u4 h
NameVirtualHost 111.22.33.557 d7 R) `! h& X( }1 v
<VirtualHost 111.22.33.55>% _6 Y: i8 ?+ Y
DocumentRoot /www/otherdomain
) l0 Z6 s, K; ~* HServerName www.otherdomain.tld4 x8 I# a" }/ j5 Z3 X0 y) z
...' |0 M. n" e; f% _
</VirtualHost>5 S" S6 P3 T3 s
8 p1 R3 y& M0 z
<VirtualHost 111.22.33.55>
9 _" E' H( }$ g, fDocumentRoot /www/subdomain$ e) K% F3 f6 }
ServerName www.sub.domain.tld, e9 ?2 ^9 @" [& Q
ServerAlias *.sub.domain.tld
5 O! U0 m. A0 i# R. Q7 ~( T...* T; x; E7 w2 x) `
</VirtualHost>
& i9 T6 f7 D/ t: W6 }, R: u" }! }2 n! N8 Q
混合型(IP/名字)虚拟主机配置2 b9 q3 w0 j" v! d- X: j
6 N8 K: ]! s- D0 b! C: \
Setup:服务器有三个IP,( b# L6 z. w, E( N9 m; l
  |& }5 K, c) U+ F! ~& P
111.22.33.44 server.domain.tld 用于名字型虚拟主机
  F& {2 L  C- D111.22.33.55 www.otherdomain1.tld 用于IP型虚拟主机
/ d& @/ H3 L' O111.22.33.66 www.otherdomain2.tld 用于IP型虚拟主机7 @" a) n# ~6 W- A; d9 J

' e( F6 S/ K' ^' c& {服务器配置:
3 s* j. w5 G$ _# ^- t% C...
& s, _# u+ }4 I( w0 f- R6 m2 z3 p6 H0 _0 ~: ^
Port 80/ p2 D! a% y- F2 [
ServerName server.domain.tld% C9 W4 C7 n: l9 u7 s: d
+ C( j7 G6 D- y6 U: ?. M
NameVirtualHost 111.22.33.44
& `4 i8 M& _0 o; q# P: [! z) |9 n
+ I' z& I/ Y' |& \/ F, W<VirtualHost 111.22.33.44>
7 J) e0 @% f4 k! ^3 x4 R* eDocumentRoot /www/domain% H, ~' L; f" v/ U1 z; C4 R
ServerName www.domain.tld! T8 x3 G/ q+ }1 k3 d$ d
...
6 z% r) R8 N" T* E" x) `  ^6 J</VirtualHost>
9 j- B/ L8 P) o$ L) ~6 z, `
, s9 ^5 S/ l3 I( i$ B<VirtualHost 111.22.33.44>& |, s8 a* U+ ?
DocumentRoot /www/subdomain1/ M  Z# b' r: F" H- l! f; c- t
ServerName www.sub1.domain.tld
2 [2 t& [8 Q4 G...
$ D: ]* `6 s" j' z) z* d</VirtualHost> 3 v9 w/ C6 a7 }& c' }7 x

) e0 A( |: ~; R% S# E; q& }<VirtualHost 111.22.33.44>- I/ V# n  e2 O. ]8 i
DocumentRoot /www/subdomain2$ X8 U# a1 a; M  K8 W. u
ServerName www.sub2.domain.tld! s, b% U) |4 V6 E
...1 \: ^3 i9 }1 n$ m# T- e' M
</VirtualHost> 6 F" b0 o. I5 z$ \) T
- Z  ?) v9 o  N9 n/ R0 b$ N
<VirtualHost 111.22.33.55>
. e" ]  p9 {" f) E, ]8 F) QDocumentRoot /www/otherdomain1
/ M% ?& P8 {- {- _# |ServerName www.otherdomain1.tld7 X( d4 ]8 o1 l/ X2 d
...% T2 J. s5 O9 g8 m( ]" i
</VirtualHost>
  b8 U( ?3 @2 u- ]0 o* o5 R5 J8 Z4 }' L+ e
<VirtualHost 111.22.33.66>
) k1 H5 X' F  o6 `DocumentRoot /www/otherdomain2
9 m# T( E8 |! XServerName www.otherdomain2.tld
5 ]6 F# q: ]. x: `6 s. _4 ]...1 K( {3 n' w" \; ?2 Y
</VirtualHost>
- n7 H6 S! g" W: _4 b
/ q( L0 ~+ p7 C$ e6 c7 @3 \& \端口型虚拟主机配置/ A) d" W7 Z: g# c! D7 [; s

2 Y# @6 f  @: u' p; e& NSetup: 服务器有一个IP,. k. k8 }( x" @: {& e& i5 ^

2 R2 d: ?. W& A( B111.22.33.44 www.domain.tld* M2 B% G7 }6 l5 `6 Q
" l$ S5 ~. i6 b/ _# ^- c! F8 W, |7 V
不需要另外的别名或IP,采用端口型虚拟主机即可设置一个配置有别于主服务器的虚拟主机。 % s7 Q. ^7 Z  I5 z& l6 c

7 p6 ^2 p1 V: E3 A" {- r9 |服务器配置: 9 L( t2 F8 B2 ?2 V1 Z0 p, v
...8 Z0 B" f" B7 `% P

) Q- ^, h0 Z% f; m0 V' [! iListen 80  n/ `) _* H! J/ n1 Z2 s% w3 Y3 s/ Z
Listen 8080
5 s  m3 A, z9 ~3 }) {* h# N8 L
2 l! u, I2 d3 |ServerName www.domain.tld$ ?* q+ G( O' l6 j$ f7 R" K% p
DocumentRoot /www/domain
7 b% e' Z, Q2 W+ T( {3 J! M5 s8 o/ v) e9 K8 W
<VirtualHost 111.22.33.44:8080>
# L) b9 T& L! xDocumentRoot /www/domain2
: V3 D+ j# w" m$ T# r7 f+ ?2 `$ A, o...
! e# Y1 }8 Q# a3 o- u3 c, s4 N</VirtualHost>
( ~# S* p* X1 `
( q6 P; F9 H/ b; _% k 
* g1 p: d5 c$ c0 z- c& I* x
1 H( R# I# T! `' h& g2 y1 ?; k/ n来源:http://fengyu.china.com/Vhost.htm
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-5 03:08 , Processed in 0.017392 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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