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

使用Apache Server设置虚拟WEB

[复制链接]
发表于 2003-10-12 13:37:43 | 显示全部楼层 |阅读模式
unix 平台与NT平台使用apache server的设置相同。以下重点以unix平台为例
' ~; Q0 u0 w/ A( q- P% L说明apache server的设置。另外值得注意的是,虚拟web的成功设置,有大约
  m$ n2 ?5 I! r9 r" ~* w2 O50%的工作量是在域名的注册与解析方面。所以一般先注册好域名然后再做4 s, D! p# {, o) `
虚拟WEB设置。
, ]# y. f2 C+ P$ ]2 J9 L
1 y5 ]) S- y! m6 u0 S9 F0 F一 、IP型虚拟主机
3 s3 K$ o- a4 m! y5 N! E- s* W! O  t( Q4 ^! u- \3 ^
IP型虚拟主机指每一虚拟主机对应唯一的IP。可通过多个物理网卡或虚拟网口实现多IP,Solaris2.5和Windows NT都支持这种方式。
" T+ \# k: |$ p7 ~9 c# y" o: b. K" ]1 ~. _2 ]* I; i
两种配置多虚拟主机的方法:. C  }. m' o& r% g& V* b3 V
/ Y) o- }  P% U2 \
1、为每一虚拟主机启动一个httpd进程。
' {/ V- {" @. o% u. N8 k
. I0 u5 K# u4 ^" Q( k. z6 O& P下列情况下使用此方法:5 _7 a" L* f. c  x6 ~6 f

' O+ h% v% N) [5 C7 ~2 K* r? 需考虑安全隔离问题,如两个httpd运行于不同的User、Group、Listen、ServerRoot,两者用户除通过Web相互浏览数据,无法访问其他数据。% z/ M# i5 K  Y! v
; M3 k$ S5 L4 ^4 z$ o
? 能提供足够内存和文件描述器。
3 V1 e& G6 Z- I$ ^" T8 S/ Q. a
! G- K3 h1 X) g2 F& X设置方法:
! n7 Z/ N7 [3 T( S* d$ {7 J
, ?/ d6 ^% O7 o% U! K为每一虚拟主机建立一个独立的httpd安装,在每一个安装路径的配置文件httpd.conf里,用Listen指令指定进程服务的IP,如:
$ t4 f( O( m/ Q2 ?
" n7 l1 c7 E8 B6 \, qListen 10.68.37.10:809 n  \2 x- \! C7 ?4 k" {

# Q! c6 A& N, v% f  k2、为所有虚拟主机启动一个httpd进程。& F: R) T( J1 U  ^* ]

/ P. M! K! B- _) ?7 [下列情况下使用此方法:% b! u4 e; S) h4 ]
8 c  H% y8 ]2 k5 l& @
? 允许在虚拟主机间共享httpd配置。
3 c% `7 e+ V8 L( h; n" p
1 R) ?. E9 ~( Y& d( k? 计算机服务于大量的请求,运行多个进程使服务器性能降低成为重要考虑因素。
' S  [4 e! v- Q, F
6 A5 _1 X$ O. `3 M2 z设置方法:4 ~& m3 E- W' o# Q2 ?
, h8 p5 R; _4 k1 T
在配置文件httpd.conf里,用VirtualHost指令为每一虚拟主机设置ServerAdmin、ServerName、DocumentRoot、 ErrorLog、TransferLog或CustomLog,如:
) N2 }+ z2 e/ x9 K8 @2 k: {& T+ ~* W* w' A/ [' U
<VirtualHost www.smallco.com> #此处建议用IP
" w7 h$ K+ m& Q; U$ w/ |ServerAdmin webmaster@mail.smallco.com& d3 A, ?. {' ^6 U% k
DocumentRoot /usr/local/etc/httpd/htdocs/smallco; r% V! u0 }! f
ServerName www.smallco.com #建议此处用域名
/ H9 C1 Z4 X1 M: \* E' |- ~" @ErrorLog /usr/local/etc/httpd/logs/smallco/error_log
( k. w' y. t! ]0 c9 W' s; lTransferLog /usr/local/etc/httpd/logs/smallco/access_log, Z( f! H" {  `* W5 F# j1 g0 O
</VirtualHost>' I7 y, d" o' F4 I# ~. m
7 l, ~. L( h& W; A9 Y" t1 Z7 L
<VirtualHost www.baygroup.org> #此处建议用IP( h7 q" s0 S9 R, _  e
ServerAdmin webmaster@mail.baygroup.org
2 q2 K# c: c$ W- j- w, v. c1 kDocumentRoot /groups/baygroup/www' D2 Y4 Z; s% u8 n
ServerName www.baygroup.org #建议此处用域名/ _7 Q$ P9 v# K
ErrorLog /groups/baygroup/logs/error_log0 \' N0 i! T) k% q% z" Z8 ]6 l
TransferLog /groups/baygroup/logs/access_log) M) Y1 X) D) Q- S  m# Z  y" W
</VirtualHost> , |$ N" o/ ]4 x% I5 [* ~1 X

* A+ {: r; C- d. D( ~% I8 S同时要做虚拟网口或网卡的配置,在DNS也要做相应设置。
7 k* E6 b* b" V: H' _* K* u% i+ |- {/ ]. }# N, `) g1 c
二 、名字型虚拟主机(Apache1.3以上版本支持)
: [1 r* ^8 x( I! T  Q1 b( T, y( Q2 h7 T# d9 k2 v! b
  IP型虚拟主机虽好,但不是最佳方案。它要求每一虚拟主机有一专用IP,在某些机器上难于实现。
( m. [; O+ O. `5 ~9 M+ }$ z/ \' }/ u" e& Z5 Y
名字型虚拟主机是指每一虚拟主机的名字不相同,但IP一样。它的好处是不限制虚拟主机数量,配置、使用简单,不需另外的软硬件。缺点是客户端必须支持该部分协议,最近版本的浏览器都支持,某些老版本浏览器不支持。但Apache为此提供了解决方法。
( m$ x% H# Z1 @/ W* \5 P1 E
/ P7 a$ k; F% m! @1 d2 P/ `0 Z设置方法:
7 ?8 E; c+ K; c8 J" w# X, j7 d9 J0 r7 B5 C& v& P
在配置文件httpd.conf里,用NameVirtualHost指令设置虚拟主机,如:
5 i1 g4 j8 ]: c" ]. H. Q9 m: _* p5 i* r& |
NameVirtualHost 111.22.33.44
( X* t/ G; Q9 c! x  r8 H
0 y9 {5 d& w4 g( d; T8 V<VirtualHost 111.22.33.44> #建议此处用IP% X1 ?% A  a( K; }3 W: Q" o) W
ServerName www.domain.tld #建议此处用域名
9 d- P! n$ Q, ?8 |9 v( XDocumentRoot /web/domain% y' u5 s2 y# o9 `
</VirtualHost>
6 R, A0 e' ?+ d/ s/ T+ N7 f4 \8 g0 S3 T$ I) a
同时,在DNS定义www.domain.tld指向111.22.33.44。; S. v; U* x5 X/ ^$ t

' ]- ?4 I3 H/ u: M$ i. z' n  {% s注意:当在NameVirtualHost指令后使用IP时,任何使用IP的URL请求都是针对虚拟主机的,主服务器从不会响应一个使用IP的URL请求。
) ~, z) C- r+ h  K' Z4 s! D- a+ P+ m) Q; d. ]
另外,有些服务器希望以多个名字被访问。例如,假设有某一IP的服务器,希望以名domain.tld、www2.domain.tld都能被访问,做法是在VirtualHost指令部分使用ServerAlias指令。如:5 E% w6 g2 F0 n( H9 U7 t6 i. `
( `1 J* a% \& s! ], b
ServerAlias domain.tld *.domain.tld
0 l# v! ~5 D8 B
: O7 x. r; x5 D6 h+ _: p另附一些虚拟主机的设置实例。
7 p( T3 q% L6 x3 o* `5 X1 r
+ E' s. i" Z$ s / s2 t, e8 ^8 E, C* s, B
/ v3 E, R8 ^7 \7 ?. ~: o- r$ O) @# {
 
  G) b% |* M' [4 \2 U0 r0 a4 X& `7 d# J# w! b( ?  a2 o3 }; `
附:虚拟主机设置实例
, t3 Q; }) k: r/ E
4 J! h/ |! S+ d% s) v, h9 [) xIP型的虚拟主机配置
: `& t) s- p- ^, v1 c. F) _& x8 n( W% v) U8 W% F
Setup 1: 服务器有两个IP,2 i5 \0 N1 G8 f- S" S

5 V; }; p/ K/ Q0 \9 m) }111.22.33.44 server.domain.tld
% M& G9 |( g. H& w' w; j  q# u7 y7 V9 V0 [9 j
111.22.33.55 www.otherdomain.tld5 v' Y. J* G% H
9 e9 {! N9 Y% M% p
www.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。
2 ^: f5 T4 I! r0 A+ @
2 r( w% Z# m) K$ U" w服务器配置:, V# l/ P& z6 D: Q

) {  Y: a5 ^1 H' j- _! l6 [5 g...
4 C7 k  R; t# J2 @4 U. d
. ~0 D# x5 p$ K. \8 VPort 807 u6 s: z4 e6 g4 X* T
; h. N, X( q! s
DocumentRoot /www/domain
4 |6 Z. c9 T& L0 p8 x8 N/ {ServerName www.domain.tld, E3 W3 [% Q! p; u
<VirtualHost 111.22.33.55>
% ]9 \- D( \8 n# E0 dDocumentRoot /www/otherdomain0 H( [7 {! K2 |/ A. g
ServerName www.otherdomain.tld8 d" M, |/ s9 [8 b2 k
...
- ^3 x: E8 k- p, v* R+ _+ u</VirtualHost>8 t  s+ e8 Y! T2 ]- l$ S; v

% J5 U. T, l. k  b8 iSetup 2: 基本同Setup1,但不设置专门的主服务器。
; ^- T3 |( m) T; C" @
/ J0 J4 ?. z( b0 g- U$ t服务器配置:
( F/ M& C: @" t" }6 c8 E
6 Z4 l9 ?+ E& e) [4 J..." M) }: q' x- q. L. c+ R

* U% q# W2 G4 n% c) C) ZPort 803 T- z/ f) T' j# N# Q/ z4 c

8 ]' x' Z9 f8 YServerName server.domain.tld1 I2 G3 `; T# G& \4 M
<VirtualHost 111.22.33.44>, ~- ~: ?" P$ B! G' j9 M% N
DocumentRoot /www/domain
( e/ b2 Y4 c- `$ A" sServerName www.domain.tld
  s8 a, c8 ]( b( Q2 [3 |...
4 z( B& ~+ f* R</VirtualHost>' U3 }5 u- @1 s! Q& F& g+ a

# h& s5 y$ @3 b% N. P4 W! ~<VirtualHost 111.22.33.55>  _: |" Y; F5 D& ]; `5 f2 V
DocumentRoot /www/otherdomain
* d- u  O: T* A) u8 q/ ?( P3 f3 b) q, }7 ^ServerName www.otherdomain.tld3 k0 ]  F  v" P2 f- Q
...* ]! D4 a5 v1 a( A8 t2 ]- Z9 s
</VirtualHost>8 N+ L/ C% U0 R0 V. Q1 X$ ]% i
5 n6 A, U5 k' f$ C8 q
这种设置只有当URL为http://server.domain.tld时才击中主服务器 # {% [4 Q+ e. K2 @: _4 X

/ E$ I' N! S2 z" }' wSetup 3: 服务器有两个IP,% C2 G6 w/ o* G
; X1 s0 I3 W  z, q9 p
111.22.33.44 server.domain.tld
& m: S, s! L3 j% z% a9 y111.22.33.55 www-cache.domain.tld
+ u1 A% n0 }; qwww.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。
2 b, J, ~! B8 v1 Rwww-cache.domain.tld是proxy-cache,端口是8080,Web服务器使用默认的80。5 w* ]" @% z5 h' C+ K. y
) E. ~* F; }; a  M. G4 K
服务器配置: ) p9 N+ G( C2 \% m
+ e" @# c2 g( L5 Z, r( t  j
...# }9 T  h" Y+ t5 m/ F! V, Z& v; G
5 C0 W" y9 K# E
Port 80
& ^" [9 c! `; @& R# t5 t) {5 m) ^0 W, @6 H! ?- `- k# r& O
Listen 111.22.33.44:80
9 q+ ]- f! |. r; e/ F% R+ FListen 111.22.33.55:8080$ @1 H; f' W) ?) J( C
" H7 v7 b* \) O" s) R
ServerName server.domain.tld, C  s7 g& N! j1 U
<VirtualHost 111.22.33.44:80>
+ ~$ c; c7 p- g1 ^; v3 `DocumentRoot /www/domain+ F3 k* [" Z. r/ P
ServerName www.domain.tld" b- Z6 |; q( Q6 E1 W+ Q
.... D2 j6 n) u: L2 g* P( ~+ R
</VirtualHost>
; q. b* ^. V0 ^  _* N% g" Z" L+ ~. g5 U5 i, M4 J
<VirtualHost 111.22.33.55:8080>
. F" J0 `9 _" b: R$ vServerName www-cache.domain.tld9 D3 p: c5 s9 @& ]
...
" j$ H# D8 Q" m7 s$ r+ e! w% w<Directory proxy:>! C4 s( d% D: O! @+ V
order deny,allow
. S) F& Q* i$ _% n9 E6 D$ }deny from all& V" F: K  r; M$ v" e
allow from 111.22.33
) ?# l. E, ]- H: `4 M$ C</Directory>7 z4 \1 F  \! M
</VirtualHost>
- {8 U! a# E# G2 x4 q* f/ i
4 i8 o0 q- q7 g% N. i( N0 n 
4 c& ?, }0 x7 w) L$ g& v  r9 p) I- i5 I! J; T
名字型虚拟主机配置
# P8 m9 N! V' [7 D; @# i& {$ D( F; a0 G) I; T
Setup 1: 服务器有一个IP,& l+ w- t1 c6 T9 Y4 J1 [- ~

. u9 Z* e  \  [: D* Q, _4 u111.22.33.44 server.domain.tld.
3 p9 ^) B5 f( H3 ]6 T( x* X% y7 H, n% Z$ n# \
www.domain.tld和www.sub.domain.tld是别名(CNAMEs) 。 0 _0 Y, |9 n3 F

. ]& e, b  Z, V/ o9 Z, o3 Y- D服务器配置:
4 P# Q4 d! a# i7 d  K& x: o
2 |- a; V+ R: N5 u( n$ C.../ Y: g7 Z4 U6 R: J  j$ r6 A

7 L: i# w' ~: G2 I8 A' DPort 80
! a. G) v: b2 y/ E! B. p, z6 \) `
ServerName server.domain.tld$ `, r% @4 f% O- C$ @6 o2 @" z
NameVirtualHost 111.22.33.44
: {  Y  y( e' Y0 J8 U0 [
! m. z7 b" M8 a/ r1 A: _* I8 t<VirtualHost 111.22.33.44>. @) m! ]. T! i( t  H8 A6 J
DocumentRoot /www/domain
6 U0 a$ q+ Z" i2 X' Y$ n' cServerName www.domain.tld
/ I& S# r0 G. y5 b, ~& W# _# y$ h...
3 O  ?8 B. v+ l. u3 j/ ?</VirtualHost>: ^& |" ^; i3 G2 P( T

+ z6 b# `. h/ v/ l<VirtualHost 111.22.33.44>" f4 F* o; {3 ^2 ]
DocumentRoot /www/subdomain
2 ~* M) g7 d% m8 {: {ServerName www.sub.domain.tld
6 f5 \: r7 I  x8 X9 z5 n! m...
2 I# n$ H; G7 H+ a0 n, R</VirtualHost>   E9 n) ~9 m% w+ E7 Q- U+ e( J

! ?4 R  [* z5 M/ @. f& ?若使用IP访问服务器,由于 www.domain.tld 有最高优先级,被认为是默认服务器或第一服务器。
  H: i) V- {! v8 Y4 W
/ g* I0 b7 c3 R2 qSetup 2:服务器有两个IP,! p8 ?3 U  x4 M+ }
1 @) W, }# K4 ?0 h+ y
111.22.33.44 server1.domain.tld 用于主服务器0 L1 [; m' M6 ?
111.22.33.55 server2.domain.tld 用于虚拟主机
0 m& _/ z1 D: M7 [+ ^  g* W& Z9 D8 d4 R别名www.domain.tld用于主服务器,
2 h" H0 r1 |. {8 f8 ?3 b) ?别名www.otherdomain.tld用于一个虚拟主机,% T8 p- K$ o2 d4 W4 \
别名www.sub.domain.tld,*.sub.domain.tld 用于另一虚拟主机,0 [5 g5 E4 H, Y, B

) w* R5 q$ M. N5 X2 c* G+ O服务器配置:
- U# M- A& Q4 Y. S2 v/ E; [. n, D; n6 y' H' Y
...
; T6 x+ g- l0 G/ i+ ~- f
  v, i; l( i6 N, {9 l* ]- Y" q  UPort 802 [0 d5 T" u+ a' T+ p1 {6 r

: K. `1 v: U: `ServerName www.domain.tld: ]: ^7 t' i, O, f! d
DocumentRoot /www/domain3 v8 x, D, }+ h$ |1 J+ U
NameVirtualHost 111.22.33.55' M9 i5 O* ^/ e% D2 o' L1 Z: z
<VirtualHost 111.22.33.55>! U! o$ ?; C6 F! m1 \
DocumentRoot /www/otherdomain, ^  z; X- H& V! l/ b9 ]
ServerName www.otherdomain.tld
* _- m9 i  x5 [  s...
, v8 t% r" J4 A) s) m% D$ a; n</VirtualHost>: ?& f& |+ F3 }3 G7 A5 e9 w3 d( g

2 f6 O' {1 c" S, g1 K( \5 _( g0 j<VirtualHost 111.22.33.55>
: J' @1 V4 p) n9 {DocumentRoot /www/subdomain' E4 S! S, G2 C; T; \7 t
ServerName www.sub.domain.tld; ~1 _- P; y0 S9 `' s: y* }
ServerAlias *.sub.domain.tld
4 ?7 Q( a' q! D7 T8 I( ^% W5 _.../ K! l" k$ w- ^" F, v
</VirtualHost>
( X7 y# ~' [1 R1 I3 ^7 L5 Q8 L3 U" d! s! b0 \
混合型(IP/名字)虚拟主机配置
' c, w' u+ X: {" S
4 i5 a  e3 O7 K7 w+ ^7 ]Setup:服务器有三个IP,
3 h; N4 I. m" u, n2 i+ Z
, a2 e) ^( M: w9 [$ Q111.22.33.44 server.domain.tld 用于名字型虚拟主机
! Z$ a* A# P" f* G: H/ ~( A1 ?111.22.33.55 www.otherdomain1.tld 用于IP型虚拟主机4 ]5 u: n- o4 f/ Q9 ^
111.22.33.66 www.otherdomain2.tld 用于IP型虚拟主机( j5 e5 ?8 U9 N% H
3 i8 E4 {6 n! @1 N* w6 v
服务器配置:
+ M7 e! T, e2 C* g6 p0 l. m. Z...
- M$ R! W7 f8 \/ [' Y4 U% T! q" ?. h3 W# M& G+ `
Port 80
6 r6 P- c# }: fServerName server.domain.tld; Y3 ], C, u7 Y
% H6 x0 d6 P$ p7 t2 A* E4 ^
NameVirtualHost 111.22.33.44
  ~8 e& T9 ^# a3 x( z! o1 M" q
/ _. Y/ I" e! l: A" W1 |, y- ]<VirtualHost 111.22.33.44>
% t! c) F* d5 P/ lDocumentRoot /www/domain% B& ?( B  z: @  e: W+ e( ^" w- ^
ServerName www.domain.tld
8 B. U  E" ~* W...
7 i7 w; w! |/ O. n, q</VirtualHost>
3 U- @( J# x4 E( W' m
* H' ?" M0 z0 @% J+ t# k; S<VirtualHost 111.22.33.44>
0 b7 j$ M2 M  [# `, wDocumentRoot /www/subdomain1% w- A6 j  i! O: B1 r1 ?! G. F
ServerName www.sub1.domain.tld
/ e) T2 g' u7 y8 u& T% E...
3 o  C2 c  u5 |) S/ M/ C</VirtualHost> & {. {' d1 a( Q

  k  _* g2 G7 S5 U- S1 f% m* u9 G<VirtualHost 111.22.33.44>
' I1 g, w# T/ @: a) ?6 \$ FDocumentRoot /www/subdomain2
8 z( W8 A# L' b9 a9 a4 s2 q+ ~ServerName www.sub2.domain.tld; u; r, `/ _6 T  m/ }7 z# Y2 `
...
7 K# p; P" f8 f& p5 n</VirtualHost>
0 ~0 b8 d) y5 O6 S% x. a0 S6 ^" ^
# a# S% G* T2 j5 f8 B% g<VirtualHost 111.22.33.55>
7 n6 h) D% k+ ]# qDocumentRoot /www/otherdomain17 ~; _$ f, q( B( D$ L" y: e
ServerName www.otherdomain1.tld
1 O+ H4 a4 h9 M) g4 T...8 B) H' Z& m2 _  W2 x& y: A+ J
</VirtualHost>   E5 k3 ~. A9 |: o

+ g1 q. v, o5 u  B* a<VirtualHost 111.22.33.66>9 u* D4 y% m' r$ {5 C3 W
DocumentRoot /www/otherdomain2
8 m: G; T8 g9 A' C: KServerName www.otherdomain2.tld# B& R  i% M+ J/ @+ y
...
2 ?" d8 c! f, K0 W/ K, j* M4 s</VirtualHost>
* M$ r2 B! W& x& h6 x+ z( h& E( `  S( @/ \# U7 s% u
端口型虚拟主机配置( x1 T0 Z' e( F  A  T

" u! Q0 D. q3 ]) |Setup: 服务器有一个IP,
( j( q  K: d* g9 y3 F% f& R8 Q' x4 O5 K2 ^* H- C; A" \
111.22.33.44 www.domain.tld# M# s- ^: N4 Y' h

# Q) C4 s, J& T不需要另外的别名或IP,采用端口型虚拟主机即可设置一个配置有别于主服务器的虚拟主机。
- i  o) @' ]/ c& u6 x, T. I3 ~. V' {. {) n
服务器配置: + G! V  U6 a, b$ h& e
...* N: \' v9 X7 Y) G5 o. C6 w

% Z& O2 k4 E2 ~) }" kListen 802 Y. e! R. Q1 ^3 x9 \6 t  o  Q- y
Listen 8080
7 p/ n; s7 M: [; ]# s6 ]# o. x8 D* B9 C( d6 c
ServerName www.domain.tld' s# I, `9 q2 L' w
DocumentRoot /www/domain
) _+ K; f& L+ r6 b7 d
. v2 c5 Z! J% w3 A$ A, _<VirtualHost 111.22.33.44:8080>* m# I( I# {, B% _
DocumentRoot /www/domain2
) i. e  ~3 u& ^) c...% e. q9 K) d" a7 M
</VirtualHost>' i) U* H) F. Y6 ~1 [, [
" a; I0 V& U$ G9 e: b8 ~* b: u
 4 \  [9 Y4 x3 b; x) J9 t8 W

* F$ b& t* l; g3 i# F" b* ^+ N+ h来源:http://fengyu.china.com/Vhost.htm
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-30 13:16 , Processed in 0.035244 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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