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

使用Apache Server设置虚拟WEB

[复制链接]
发表于 2003-10-12 13:37:43 | 显示全部楼层 |阅读模式
unix 平台与NT平台使用apache server的设置相同。以下重点以unix平台为例
0 a9 V) @7 K" j+ @& e: w- @0 N说明apache server的设置。另外值得注意的是,虚拟web的成功设置,有大约  Y+ J0 }" ^5 r: O% i6 f5 q
50%的工作量是在域名的注册与解析方面。所以一般先注册好域名然后再做
+ a  D7 B9 B) N3 j4 z虚拟WEB设置。
5 f: B8 X0 }$ e2 s9 _2 T/ ^: ~% n9 ?8 G& ~
一 、IP型虚拟主机0 j5 B2 O" r+ v' l7 {% }  S

% d3 c  E: z+ H9 j- z# V& U+ @IP型虚拟主机指每一虚拟主机对应唯一的IP。可通过多个物理网卡或虚拟网口实现多IP,Solaris2.5和Windows NT都支持这种方式。
  i$ S: r7 a  ?: N4 g2 ?1 l4 W& X/ j8 x6 d' b9 m3 P: W6 I, @  H' q
两种配置多虚拟主机的方法:
. ^# R& N2 |( a( Z1 f
( V8 j' m: e* B8 G& ^9 V& Y5 q1、为每一虚拟主机启动一个httpd进程。
* I! e/ v, M) _+ J9 p: q2 M% g7 I$ Q* I3 D1 J! L, H9 J1 r, ]
下列情况下使用此方法:
. `7 c; M% c' L' Q" i, K* A6 f( v
5 o: f5 M' ~3 @? 需考虑安全隔离问题,如两个httpd运行于不同的User、Group、Listen、ServerRoot,两者用户除通过Web相互浏览数据,无法访问其他数据。
7 a5 D+ z- c0 ^7 t( \3 k" ]: H; z, w* i5 V
? 能提供足够内存和文件描述器。
/ K) Q  s7 D3 p% P$ `" t: j( y. r* F. q5 b. C% Z: f( E
设置方法:: F$ s  B  |7 |5 O9 l! W
5 n: P  r: G9 z8 ?
为每一虚拟主机建立一个独立的httpd安装,在每一个安装路径的配置文件httpd.conf里,用Listen指令指定进程服务的IP,如:
* E' k9 H# Y' M$ C- P' i. W  e. b. L- e+ J. u
Listen 10.68.37.10:80
0 O0 n5 V4 _: o. k2 e% E2 Q9 b/ l
" R. v- `* G- h, T  z$ r7 h4 g2、为所有虚拟主机启动一个httpd进程。
7 d. }+ {7 Y+ ~; V6 z( w
4 o' d, p1 U7 M$ T% E# p下列情况下使用此方法:
9 W% A! m8 D6 U6 i: Y; s7 j
6 ?1 P2 ^% z9 j, M+ b3 p( q? 允许在虚拟主机间共享httpd配置。, D5 S5 T5 R$ Q  s, D9 J
5 u3 I; Y/ G! J" f: X
? 计算机服务于大量的请求,运行多个进程使服务器性能降低成为重要考虑因素。
& D2 j9 A1 z( ~
- k  q) N2 a( X: G+ l+ d4 M设置方法:
& f$ i6 K! }* F* X' ^* D( c& A
; z! R: Y; b1 c, l& `& ^在配置文件httpd.conf里,用VirtualHost指令为每一虚拟主机设置ServerAdmin、ServerName、DocumentRoot、 ErrorLog、TransferLog或CustomLog,如:+ o) ~. J9 H7 h+ }
% B5 ?1 \& m1 f. D+ ?7 j6 T3 O
<VirtualHost www.smallco.com> #此处建议用IP
  |5 }( L, W7 O/ rServerAdmin webmaster@mail.smallco.com4 H" j! x4 |" s& l" H) {
DocumentRoot /usr/local/etc/httpd/htdocs/smallco. i+ x& C, x; U1 Y1 n
ServerName www.smallco.com #建议此处用域名9 J, R: ?! w- f' q
ErrorLog /usr/local/etc/httpd/logs/smallco/error_log
8 k' V$ E. P7 _; w2 B. ^TransferLog /usr/local/etc/httpd/logs/smallco/access_log
. h2 b4 r; a0 h# n  |6 w</VirtualHost>
. `4 p0 }+ z1 |: j" h
# u% M7 Q; M! [( o& G9 p<VirtualHost www.baygroup.org> #此处建议用IP
2 U' f0 @0 ]+ t0 E, fServerAdmin webmaster@mail.baygroup.org
, |9 G$ A1 F* s4 l4 UDocumentRoot /groups/baygroup/www
% {5 N. N5 [) xServerName www.baygroup.org #建议此处用域名
8 M  C' r- B' c! R8 XErrorLog /groups/baygroup/logs/error_log
$ Y  {' S$ \7 v7 Y6 NTransferLog /groups/baygroup/logs/access_log
1 `+ T" [* h( H) f</VirtualHost> - `9 e1 z8 O( L$ F3 ]5 @! {$ Q3 o
* S8 W; G- j# Z
同时要做虚拟网口或网卡的配置,在DNS也要做相应设置。
1 L0 M; X4 x# v8 d
! x3 B. ^, }! L# @$ o. I9 {二 、名字型虚拟主机(Apache1.3以上版本支持)1 K, p8 i  i- }" @

2 B! s( S, S0 J$ f  IP型虚拟主机虽好,但不是最佳方案。它要求每一虚拟主机有一专用IP,在某些机器上难于实现。
8 s+ D  D( w# E
- X0 b( H; E3 `; f名字型虚拟主机是指每一虚拟主机的名字不相同,但IP一样。它的好处是不限制虚拟主机数量,配置、使用简单,不需另外的软硬件。缺点是客户端必须支持该部分协议,最近版本的浏览器都支持,某些老版本浏览器不支持。但Apache为此提供了解决方法。, D0 g# R' p. H5 g9 }6 T. D- n

% T1 N. P6 L2 I7 i8 _* H设置方法:
4 }$ C. P" g0 W+ _- s, k; Z  Q$ X
在配置文件httpd.conf里,用NameVirtualHost指令设置虚拟主机,如:1 ^6 z4 ~) a* h' k& f0 x* r2 A
( c  a0 e4 ?% z2 B
NameVirtualHost 111.22.33.44
# U' Z1 p7 u; a9 T. ]6 B! S  V4 e5 `; e. U( @5 X% o) L
<VirtualHost 111.22.33.44> #建议此处用IP3 {( M: d' E' _3 X* S
ServerName www.domain.tld #建议此处用域名
5 f* D7 f$ B" L3 }0 F. D; WDocumentRoot /web/domain
3 p: B! M: k+ P9 B+ U& w! n/ ]- T4 r( \</VirtualHost>6 m. U- ~" d; R3 Q6 d! ?
* l& M5 Z; S: J/ G, c. v5 Y0 r
同时,在DNS定义www.domain.tld指向111.22.33.44。* B, I+ d2 w* E

. O+ T$ q9 v1 G& b注意:当在NameVirtualHost指令后使用IP时,任何使用IP的URL请求都是针对虚拟主机的,主服务器从不会响应一个使用IP的URL请求。
7 T9 R7 V9 M8 R7 c5 E5 m( a& n' Q: G$ h( P
另外,有些服务器希望以多个名字被访问。例如,假设有某一IP的服务器,希望以名domain.tld、www2.domain.tld都能被访问,做法是在VirtualHost指令部分使用ServerAlias指令。如:
5 i3 g5 z' U5 |" F4 }
& f! w; y- G. G7 u9 tServerAlias domain.tld *.domain.tld
. A& |5 z0 p+ _' P0 g0 W0 ^. D# _' R. Y0 D
另附一些虚拟主机的设置实例。
1 |7 f% z6 u7 x; F' ~! z4 T
/ A* ]$ H6 g! Z. ~) ?, f 
2 N$ i7 a+ Y/ R- }
. y5 k8 l" {0 `2 P 
  D0 y1 r8 I* y7 g4 d8 x1 T
4 D! m, B# z& _4 |附:虚拟主机设置实例
4 u9 i; D6 ?3 b, Y8 O2 @4 I6 f  l: y. P& l1 K2 p- J" Q
IP型的虚拟主机配置
' f4 n1 Q0 t% T) \: _8 ~+ }0 t8 ?! O& A7 i) S
Setup 1: 服务器有两个IP,! J3 v7 d5 f, T
1 I9 ]( e9 w4 U5 A; q  i, \
111.22.33.44 server.domain.tld$ Q4 f4 e* w3 \
" L% D& B) p8 Y! D0 e9 f# ~
111.22.33.55 www.otherdomain.tld
& y' F" E' m2 Q6 Y
2 r: x. [! C7 S  z: F& y# _www.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。
  I$ P3 e- ^2 X+ M" j$ ~+ k
! C5 i- j1 |' s服务器配置:1 P- q0 O( M; H9 w2 \" U
* l7 @! x$ `; c1 @0 L3 t: T
...
* |/ m3 U# |6 T# i. s
7 K" i8 Z8 C, \: l6 l% tPort 808 s  x# y/ }& m/ f

' f! n& |9 q+ z/ S3 kDocumentRoot /www/domain  x4 `. x  Q! k, X- l8 L
ServerName www.domain.tld
9 i4 K0 w( H; p7 K) ^; O& f<VirtualHost 111.22.33.55>
4 a" {. r% r. C1 ~7 a5 lDocumentRoot /www/otherdomain8 ?  I2 u- p$ S2 v
ServerName www.otherdomain.tld# H3 h8 T- u- h  N9 t) n3 y
...
: x. C1 i! W( F9 O% n* U</VirtualHost>
+ N# p9 b3 s  o: L8 i: R# E$ J+ Q' J! Q- D' Q
Setup 2: 基本同Setup1,但不设置专门的主服务器。
/ N+ N5 h; j) @; n3 `
5 n+ O" O' ~8 X8 T) J5 s. \0 O服务器配置:, G, y7 H4 k% Y& h) x0 [! V

" o$ ?. m7 T4 n+ s. o.... L: D) I/ X9 H

  [- g; b1 Y0 K5 ~: D- tPort 806 S- r' e* j$ h" p0 Q; k

5 L8 @7 q) D2 ~6 ~6 eServerName server.domain.tld
; G6 P  \( Z+ f5 {/ K<VirtualHost 111.22.33.44>
& Q' m4 U, L0 j8 d: SDocumentRoot /www/domain* u4 u: ?8 [1 w' |; ^
ServerName www.domain.tld
; U" T2 c+ ^' h+ M& b! `/ _1 F...9 Z5 ?9 d# ~3 f% g4 W
</VirtualHost>
9 j2 |) k8 z5 R: o' w
. V: ?( N% M2 a' [4 q/ i. C5 N<VirtualHost 111.22.33.55>. t8 r' E& M6 d/ ]1 G2 ^! C
DocumentRoot /www/otherdomain
. e& c  @9 M8 K2 E! {* `ServerName www.otherdomain.tld: [$ i+ ^+ o; ^8 Q/ \% _5 \. b
...; p/ v7 O$ Z. O" J
</VirtualHost>6 I' T# }: Z# k

0 p: W/ [" i8 M: {这种设置只有当URL为http://server.domain.tld时才击中主服务器 " N# ?. z0 m/ u3 S5 N7 x$ w0 ~
5 i6 B& {$ X/ \8 G. Y
Setup 3: 服务器有两个IP,! T) O& V, i7 P1 m4 |) f5 W
- ^! i  k4 Z+ c$ V
111.22.33.44 server.domain.tld0 y6 i# X; d2 P$ U  m; g
111.22.33.55 www-cache.domain.tld, L* x! e% ], c2 c. H* J: M& n+ q0 X9 g
www.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。
! q. `4 y! O/ u2 C1 F; dwww-cache.domain.tld是proxy-cache,端口是8080,Web服务器使用默认的80。
, c7 o( f( G2 x6 {$ M# }8 k  a2 M2 h
服务器配置:   a1 T3 ]# \' _" g) O3 d' J

. a4 L' \, H) U8 j$ {& |$ S...
. V. l- N( b$ [! x; X4 @& K! z; ]4 J" {9 t/ ^( z# o: w  d
Port 805 K  [: ?- G3 w" Q& ^4 T
7 Y9 _- ^) |) j" j8 v4 C) {  d& y
Listen 111.22.33.44:80' R5 z" B6 p7 Y) I
Listen 111.22.33.55:8080
: B* U: C3 W5 `8 a) I
. l, L9 M) _! O( i6 L3 IServerName server.domain.tld
9 \  h' I8 d" n5 P5 ~<VirtualHost 111.22.33.44:80>
4 {% L. l' `5 k2 d& MDocumentRoot /www/domain
  Y/ D. {# B5 Q$ b. X/ G8 iServerName www.domain.tld
/ ?6 Y/ f$ `/ r& P8 p( H8 N8 ]. y...2 A2 T+ L* `. C3 g0 M, \
</VirtualHost>
, G) A) c0 W2 l
/ V" c" }% `% ^* a, X<VirtualHost 111.22.33.55:8080># l# |4 n. L$ V/ q
ServerName www-cache.domain.tld
# t  y1 L& i) a& D5 y' w" Y, {...
- ~5 D/ s9 ~0 M0 I1 F3 f<Directory proxy:>  j5 x) l# [8 d4 T! t
order deny,allow  s; t: f4 M: }9 S2 j4 r. c
deny from all) k6 X" w: J' t+ n% |( p# i; M4 |' ~
allow from 111.22.33
1 F0 s$ G  {( M% ~. [' t* S</Directory>$ f3 j  Q% j: p7 X
</VirtualHost>- D& o) j) \6 h0 H/ l

6 D+ p: g) a) H8 v 
' }2 |; @# A/ a. V& e0 K) n& [% B
5 u# @8 h- ~8 x' Z1 L7 ?名字型虚拟主机配置
( g0 ]7 [2 [) w: _( {8 n
" |9 {4 A  ]0 P( `Setup 1: 服务器有一个IP,
, R" t+ M, h7 ?) }: k. S3 A+ s8 y- _0 `2 Q5 g4 j5 p1 |* b# i
111.22.33.44 server.domain.tld.
$ ?: \! V# G% @; M
) t8 K8 \7 T: z2 O9 P) C9 c5 Hwww.domain.tld和www.sub.domain.tld是别名(CNAMEs) 。
8 [$ \6 @$ a6 i& c
4 s1 Z- `" d# `- L' G5 O1 L服务器配置: . Q5 `6 z9 v& {, `

$ ^5 w% [5 h, w+ V" n& N3 R...
  t/ U1 X% j1 N/ u# h/ {! {/ L* i
+ m$ S& W& [- u6 fPort 80
# x( C  ~% k8 q
1 w1 F* i. [0 `' S: ]" u$ _ServerName server.domain.tld- V9 D* d4 [6 H* B
NameVirtualHost 111.22.33.44
9 M, X8 a$ ^( T/ S* [3 k$ B5 \0 Y+ C2 q* A, q
<VirtualHost 111.22.33.44>
+ C9 L" h) s7 n* }; d* TDocumentRoot /www/domain
, ~6 c' m9 N0 a# i; ]+ MServerName www.domain.tld
1 @, y, C( I" \8 }9 q& F& G5 P6 |...$ r0 D; Z. K1 M& [
</VirtualHost>% }! _+ p' S/ Q/ \+ ]) Y9 U

' i# T. ^2 V( R& ]<VirtualHost 111.22.33.44>
& c8 Z7 M9 t7 J7 k; f" L8 r: dDocumentRoot /www/subdomain, Y, A2 t/ m4 e) W% u
ServerName www.sub.domain.tld+ R, c: n) Q- W7 V
...
; n7 C1 m  f0 {" e  V* `</VirtualHost>
8 N9 _6 s) p7 g* Z- {* ^  b6 y8 x
1 N  }3 h9 s+ H若使用IP访问服务器,由于 www.domain.tld 有最高优先级,被认为是默认服务器或第一服务器。0 f5 W: T* q4 M% R( g% C2 ^

  J" {4 y+ u# e. A, {  G+ pSetup 2:服务器有两个IP,0 u0 r4 [0 D) v5 o% P* W; o: H

3 v) X$ M! T! l. t111.22.33.44 server1.domain.tld 用于主服务器3 c" N" D# Z6 `, C) x1 k1 c
111.22.33.55 server2.domain.tld 用于虚拟主机' x0 L) f. V9 |) D
别名www.domain.tld用于主服务器,. V+ N" o! ^9 C* ^* e* @
别名www.otherdomain.tld用于一个虚拟主机,3 k/ {4 Y! V5 G7 [
别名www.sub.domain.tld,*.sub.domain.tld 用于另一虚拟主机,. H9 h$ Z! G% v1 D6 c7 M

' m' q# R/ a3 v* s' g2 k! y服务器配置:
- Q9 x; n: i! m1 j% K9 L  g. K
4 y- ~: C' g$ G$ }, f3 z. G...
8 S" L. ]4 [, |" p
5 A' T1 y# ]- _6 B! g/ c9 r0 rPort 80
! r' q. y) @' p! E9 }& f0 x, J6 q
, A+ V$ b7 w% y" @( q2 [: S( d- aServerName www.domain.tld9 s0 \7 {& r! z( U& |+ K* J" [1 q
DocumentRoot /www/domain5 H: q" R: P) q' R! e  i
NameVirtualHost 111.22.33.55
: |0 ~0 V1 x* f9 M<VirtualHost 111.22.33.55>
; R2 s: I- ~- X( \+ A4 BDocumentRoot /www/otherdomain5 F4 s1 v* }- J) c' H, u
ServerName www.otherdomain.tld' G* g( X0 F& D  B
...; h( ?. c3 W, L
</VirtualHost>
/ ?; M) `4 B1 n% A- I- J) ?0 S+ [2 e" k2 b9 d. p6 T/ E; Y' M
<VirtualHost 111.22.33.55>
" v. `5 P7 J  U4 |* o- @& wDocumentRoot /www/subdomain
) A* d. p% B* j/ V/ I+ k1 m# nServerName www.sub.domain.tld
! C6 ~) |0 d4 }1 t# P  v1 y  ?ServerAlias *.sub.domain.tld
' ^+ z$ v& A% `+ o...4 q1 H  f/ ]: q' b2 O7 w
</VirtualHost> 5 E; I  S3 H4 V7 [6 z* p0 e/ [
. }% v# m0 N/ z6 j% g0 ?
混合型(IP/名字)虚拟主机配置
4 w. Y7 p; q: Z% v; X: C# ?7 B- \* _( k5 S# {( U+ p) M3 Q7 s- W
Setup:服务器有三个IP,
+ W9 p5 Z3 W' q" s" [: D& E/ G( U3 x2 [2 A+ ]+ g7 @
111.22.33.44 server.domain.tld 用于名字型虚拟主机
" B, _& u6 m9 ]; _& m111.22.33.55 www.otherdomain1.tld 用于IP型虚拟主机$ u% m4 z1 W( P" i' B( H7 T2 K2 O
111.22.33.66 www.otherdomain2.tld 用于IP型虚拟主机* @2 x6 R- ~, u% R. ?

. F1 s! y* W7 z; {服务器配置:
6 P  B2 h2 W+ r; b/ W...  u+ _* }) w* o
' I" `0 c, D: l0 z5 [
Port 80* f1 r6 m2 @3 V0 ~. N5 {- F
ServerName server.domain.tld
% G4 N8 L) G, \$ _; s0 \3 @
8 a6 m: v5 `% a4 j- c5 GNameVirtualHost 111.22.33.44+ z0 X! P* R+ ]& y, d$ _9 o
& Z: @3 e# {5 {" V
<VirtualHost 111.22.33.44>
( e9 l' f. ^  g. MDocumentRoot /www/domain) T, @  }. y& C
ServerName www.domain.tld3 ~) X1 M& [6 w$ A; }+ \
...$ ~* y+ g' O& L( e
</VirtualHost>
/ q! n3 l3 X+ o) B: W6 C5 k: O( n  m* q5 E
<VirtualHost 111.22.33.44>3 B# Z/ a1 i& N7 c2 \
DocumentRoot /www/subdomain1
; x/ _+ o- b+ YServerName www.sub1.domain.tld5 v0 F' z, V+ D& _& |
...
9 {. r  g+ }1 Y2 p1 r: f</VirtualHost>
1 ^) A6 h( `6 ~
& r/ Z0 r; M9 ?( O0 q. Q<VirtualHost 111.22.33.44>: G- S  o0 h! P
DocumentRoot /www/subdomain2
, i' A2 f3 [* J6 J. zServerName www.sub2.domain.tld9 ~0 F* l& p! j: `0 a; w% p
...
. d. G- B: d; P/ D* U  d* J0 H1 D1 e</VirtualHost> ' h; H. S( }& h8 r1 l& j! P  U" w
/ y8 |2 Q& r% E3 t2 r; Q
<VirtualHost 111.22.33.55>
) q  t, J0 N+ p: q; }$ dDocumentRoot /www/otherdomain1+ f3 [) ]( ~- }7 J* s7 R! _4 m
ServerName www.otherdomain1.tld
- C+ ~6 `8 j; @5 t...
! @1 y3 |2 o# q; E2 R( Z7 t</VirtualHost>
4 w( ~" w1 g  v* I& V3 _6 I0 o/ n0 W: w* J& u5 k0 r
<VirtualHost 111.22.33.66>
* m( a9 a5 H# D, k$ j9 f9 c+ XDocumentRoot /www/otherdomain2( Q4 ]7 N+ f/ }" c
ServerName www.otherdomain2.tld& U* }, O* ~0 r2 |# h% F- s- k; Z* z
...7 W* [9 x7 ~7 z% D  R( h' g
</VirtualHost>
& i/ t0 ^  g1 g  ^6 H& g7 {
9 y/ [4 I6 _* V7 d6 ^端口型虚拟主机配置! w, o9 T) j, P% j& @' c
9 C  Z; {( v5 N1 e
Setup: 服务器有一个IP,, g# ?0 X" S- S: E

$ j3 m% g  }6 i8 C" \: H111.22.33.44 www.domain.tld
& i6 e# I. o( p+ o/ d4 i# K! Z7 X3 X3 S4 I
不需要另外的别名或IP,采用端口型虚拟主机即可设置一个配置有别于主服务器的虚拟主机。 1 a" {+ @' O/ P4 P
* G2 _  G( c9 k3 J  ]" {" R! I
服务器配置: : J2 b) ~# R+ i+ ?9 A1 U
...
% o4 E3 Q5 O5 u  j6 Z  Y; q
  m; E) G" \* X' D+ ^6 V5 yListen 80
5 {5 v! ]" N8 _& D6 yListen 8080
$ z8 D$ ~$ Y# j3 `! T: M$ A
# g) V% ]! ]# \- u& }0 dServerName www.domain.tld
8 H0 c( N! \' ^6 w) o- N; ~; qDocumentRoot /www/domain) z1 W+ g% V' k, p/ M
; ?( t+ l1 \4 `' @! ]4 j
<VirtualHost 111.22.33.44:8080>
4 V# `2 }$ p' GDocumentRoot /www/domain2; C& |: `+ s9 ?9 l( Y
...
' I& r3 j* S* W, G% X/ A. G</VirtualHost>- |. x  q  K. p2 \! `( V

4 P7 q. b* N/ D$ e* l: i 
  p7 \5 |2 U: ?- I; S9 e
  I  y' q1 Y/ t9 Q  b3 ~9 M. H- N4 ]来源:http://fengyu.china.com/Vhost.htm
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-2 10:36 , Processed in 0.021901 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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