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

使用Apache Server设置虚拟WEB

[复制链接]
发表于 2003-10-12 13:37:43 | 显示全部楼层 |阅读模式
unix 平台与NT平台使用apache server的设置相同。以下重点以unix平台为例
- q+ U$ L$ g% k0 U0 O) }  Y说明apache server的设置。另外值得注意的是,虚拟web的成功设置,有大约
8 F8 P6 B. c0 }' d) L8 F7 I% p+ Z50%的工作量是在域名的注册与解析方面。所以一般先注册好域名然后再做! R. V+ m# A& |$ f" w0 b4 e
虚拟WEB设置。$ o4 p6 t9 p% O% L, n7 n$ k
6 h9 O* C, R% ]. G# r9 V  m) z" `
一 、IP型虚拟主机' K7 i. t3 L/ P, }& s+ P
  Y" c; J7 H, K
IP型虚拟主机指每一虚拟主机对应唯一的IP。可通过多个物理网卡或虚拟网口实现多IP,Solaris2.5和Windows NT都支持这种方式。
/ t- Y1 Q4 t6 |; D* n% J* x1 b- T$ d( C. i' m
两种配置多虚拟主机的方法:# R' v2 ^. ^0 z( A8 E& ^

! O3 i8 y  d; ]* w! _1、为每一虚拟主机启动一个httpd进程。" {$ u! n- A" Q3 j

  Q. Q) F! Q. s8 V下列情况下使用此方法:! h2 |( o# ^# A# q! @8 ^$ K3 o

% ~9 C/ _$ c+ X5 Q7 X- ?? 需考虑安全隔离问题,如两个httpd运行于不同的User、Group、Listen、ServerRoot,两者用户除通过Web相互浏览数据,无法访问其他数据。
; t- Z; g; r1 G6 Z. D7 R- b8 J, [1 N5 ~" L- m$ \/ i
? 能提供足够内存和文件描述器。( [- w" \1 O: i/ d
  K$ C. a3 K4 r. ?9 v# Y
设置方法:
0 ?/ P& W/ d& a9 v( {: b* E
* u2 |0 Z, R; c为每一虚拟主机建立一个独立的httpd安装,在每一个安装路径的配置文件httpd.conf里,用Listen指令指定进程服务的IP,如:# b8 u- \/ T* {' E; H
: u: ~: q! v, y4 t- Y
Listen 10.68.37.10:80
# W8 {0 M% H1 E. Y; l" h
) h) P) q& d! j) [2、为所有虚拟主机启动一个httpd进程。
  X& z& R3 R% O
: x- d& R* A) R下列情况下使用此方法:6 \, |. L. v" P7 N+ \) g+ E

' L5 W7 [; m( p" t1 w' T? 允许在虚拟主机间共享httpd配置。+ J# C7 e* d! @* q
/ q/ |3 F& R; X0 w8 S% P! [; Y3 B
? 计算机服务于大量的请求,运行多个进程使服务器性能降低成为重要考虑因素。
8 G7 _6 N  q1 K2 J# m* F# l, I$ e  V/ E5 U8 O# g
设置方法:
9 `, S. V& C& y# B  r7 u/ G) k' T% s' \
在配置文件httpd.conf里,用VirtualHost指令为每一虚拟主机设置ServerAdmin、ServerName、DocumentRoot、 ErrorLog、TransferLog或CustomLog,如:
1 z( @2 P  q5 ]8 d8 U; @5 _7 O7 z- ?8 j' X# N2 B- r
<VirtualHost www.smallco.com> #此处建议用IP
3 F. G" h2 @' L, f1 \/ e, C, n6 T0 _ServerAdmin webmaster@mail.smallco.com6 V* ?! [: i: G4 H
DocumentRoot /usr/local/etc/httpd/htdocs/smallco
% J3 F9 B4 Y( ~! V8 a8 ?8 e+ sServerName www.smallco.com #建议此处用域名
7 I- |2 i2 g4 N$ Z- Y' VErrorLog /usr/local/etc/httpd/logs/smallco/error_log
: D& D$ {$ D% j: D3 v6 FTransferLog /usr/local/etc/httpd/logs/smallco/access_log# X6 B2 v. ^# D* D. f7 }1 B
</VirtualHost>2 L' S( R! T/ O( K" u7 P

; p) D" F) U' D: O1 u! F/ q<VirtualHost www.baygroup.org> #此处建议用IP8 I" W: ?2 Q; {  |
ServerAdmin webmaster@mail.baygroup.org. F- ?8 C+ e, P  R- v
DocumentRoot /groups/baygroup/www
$ I" p) L: o% l# PServerName www.baygroup.org #建议此处用域名
2 r" [: M  s& l; bErrorLog /groups/baygroup/logs/error_log
3 ^9 Z/ W) j, Y- q4 xTransferLog /groups/baygroup/logs/access_log
1 c, g$ `+ z% S4 ^! K</VirtualHost>
$ Y+ N( z( g, F  ~. _8 }
# Z7 z* N' ^- @6 l同时要做虚拟网口或网卡的配置,在DNS也要做相应设置。
8 e2 m8 i* t, U3 b/ q( g7 x: b( ?* R+ l
二 、名字型虚拟主机(Apache1.3以上版本支持): c; [4 g- B4 Q# p3 j1 y0 z3 [  E
* }. g$ l+ l7 p0 m  r' r
  IP型虚拟主机虽好,但不是最佳方案。它要求每一虚拟主机有一专用IP,在某些机器上难于实现。/ q4 O2 [) D* a# V1 e
- [5 P6 y+ d1 S9 Y) b! h/ }+ q! k
名字型虚拟主机是指每一虚拟主机的名字不相同,但IP一样。它的好处是不限制虚拟主机数量,配置、使用简单,不需另外的软硬件。缺点是客户端必须支持该部分协议,最近版本的浏览器都支持,某些老版本浏览器不支持。但Apache为此提供了解决方法。) M8 I( x6 ]  Z8 s9 \+ f  Q

+ X- f. H/ M0 d( h. d9 G0 }- {1 T1 d& {! ^设置方法:/ d7 G6 J- g5 S6 H
& m8 p6 }& k' h) m
在配置文件httpd.conf里,用NameVirtualHost指令设置虚拟主机,如:
5 e% d2 A7 d* S: ]" ?2 K0 w! X# s5 @- m9 q+ n1 y
NameVirtualHost 111.22.33.447 a% l7 L) V$ r; c# L3 X8 A
7 h8 Z) S# ^, H* N, ~9 U
<VirtualHost 111.22.33.44> #建议此处用IP
& w2 P( a8 ]1 Q. \" V# v) sServerName www.domain.tld #建议此处用域名
) w! F" R# l; E$ u7 NDocumentRoot /web/domain0 }6 V0 O8 `. H8 E! J; Y4 ^3 e9 U! Z
</VirtualHost>
9 d; H7 }( @- F4 v* ?' L# ?$ S5 e+ j: n5 [- e' O# z
同时,在DNS定义www.domain.tld指向111.22.33.44。8 I) g: C/ F1 _2 ^$ [- T: y
) C' T0 T: _1 G9 [
注意:当在NameVirtualHost指令后使用IP时,任何使用IP的URL请求都是针对虚拟主机的,主服务器从不会响应一个使用IP的URL请求。
" u5 `* m* x) N1 J2 V- q* D1 Z; Q  I
6 i+ A8 @/ j6 v1 x- o+ K另外,有些服务器希望以多个名字被访问。例如,假设有某一IP的服务器,希望以名domain.tld、www2.domain.tld都能被访问,做法是在VirtualHost指令部分使用ServerAlias指令。如:# J. y; e* B4 [9 D$ k1 h
5 s# B% U, F8 N
ServerAlias domain.tld *.domain.tld) \; s. ]- X% ?8 o( s7 S8 d2 N
+ }8 {- Q4 |' d4 L
另附一些虚拟主机的设置实例。
, F+ b+ Y# |4 m! B4 H+ z
* K1 j8 U; `; ?: h) w5 p% K " q# g: w6 H3 K1 h
( I7 ?! N$ y; I" m' _
 ; \  I7 M" N4 O+ Z% j5 H4 H+ W

9 z8 s2 |! m# j附:虚拟主机设置实例
) w# I8 W6 e& ?* @% m; v7 E. |" `1 C1 a' j" s+ w3 a6 p
IP型的虚拟主机配置5 L. u  \, y) W3 D: H4 n" e6 `
$ b4 ]3 p# I: s7 e
Setup 1: 服务器有两个IP,0 z' R! `& r7 Y
* j- S8 }' W! z( Y* Z! V; _5 j, T
111.22.33.44 server.domain.tld
0 P" r; V$ |. }* `7 [' _
  |5 L/ \  S) n% p9 E% I111.22.33.55 www.otherdomain.tld3 H0 i4 n5 R7 \" l$ G) Y

0 t. s# y7 ^: L. u: _www.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。
! a5 I4 x/ X6 s! Z  w
1 c! F! F3 t; P( i, l服务器配置:
0 k( e2 D" S. a6 q# O# j2 G
( q* v7 I: L/ L1 [...
1 w, k* P0 l/ F* {" P" D+ d7 H4 B- `4 G$ m2 V! h
Port 80
; p* K4 C- }) O8 K0 }. t
3 Z$ [1 v/ o* K  w* `9 {2 V- MDocumentRoot /www/domain
5 Y6 V3 h- I' i$ ]& W/ v# CServerName www.domain.tld
/ M0 i$ U- j( }<VirtualHost 111.22.33.55>$ R& p! T& a0 b& o
DocumentRoot /www/otherdomain
1 ]3 z! l1 A0 H1 I. S( EServerName www.otherdomain.tld" L1 I5 @8 u) Y1 S! `
...) @" u5 y9 `  o' i
</VirtualHost>1 r# }* b! H1 m+ X

: o+ E5 t7 Y7 x5 i, _Setup 2: 基本同Setup1,但不设置专门的主服务器。
! {9 v9 u! k# M( m( m; X& U5 G* d4 n* x" I; A$ S
服务器配置:; t  K0 T- ^1 a& j

& H$ x' p3 x2 ~$ D+ T+ `1 J...
4 l; N' k1 s  T  Z* ~0 S
8 K* {( s3 j8 _5 u( JPort 80+ j) `% O% B$ e: F& Y' G

6 E! a: F! t# b; N( _3 y4 j) v1 nServerName server.domain.tld; \$ ~. x, A9 z/ j9 D
<VirtualHost 111.22.33.44>' x$ G( M7 ]6 p- q1 q& `  y
DocumentRoot /www/domain; p- Y2 B7 d" G6 E1 r* t# E6 l& X
ServerName www.domain.tld
; ?4 }& Z- D' H. V...: j6 M# U4 {, V
</VirtualHost>3 n9 f; X" u1 r5 A' l0 N8 ~: q4 d* T; d
7 F6 f, z0 Z6 x/ V$ _3 i8 j  t* J3 P
<VirtualHost 111.22.33.55>
( _/ I& w& O( {: NDocumentRoot /www/otherdomain
% e. `1 K5 A# R5 a5 @" kServerName www.otherdomain.tld
. Z3 B. g; M) w: B- O...6 W5 @# R1 v% c8 _' y
</VirtualHost>
2 ~* @  V0 r8 x3 q) {; K0 @5 V3 T8 H0 U( l
这种设置只有当URL为http://server.domain.tld时才击中主服务器 + d0 e# O8 \5 W2 Y8 Z. m7 N; ]
. W/ a2 L: A0 e- Z2 Z$ L0 F/ K! b. E
Setup 3: 服务器有两个IP,
& {, w% e6 r6 e; y: N; y9 D/ L; y6 N9 |* ?' _3 x
111.22.33.44 server.domain.tld
  ^- q2 V1 m: I- Z& s: o2 Y) `# T111.22.33.55 www-cache.domain.tld
& V( Q1 t, n8 L' ]www.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。
2 C; d* T3 X0 T5 ]5 Awww-cache.domain.tld是proxy-cache,端口是8080,Web服务器使用默认的80。
0 x+ Z; m: ?7 i0 Z, z) E
5 s, g# x/ w5 z7 y5 o. h2 H; T服务器配置:
1 f- [. ^* r4 I- E2 `, c) [6 v% B  N. Y2 [; }3 E4 N
...1 E2 I6 w3 e  n9 j; P; p

  |, f. r2 ?3 F3 h4 J# |Port 80
. j3 T* y6 p$ J0 k+ _. @! X* T- `6 K) o( _/ q) p4 @5 M
Listen 111.22.33.44:80
- x2 `0 O; I( {3 [Listen 111.22.33.55:8080
' ]4 _' \7 `; f0 D( K4 I
8 b4 d* Q; u0 p3 P4 cServerName server.domain.tld9 W' x6 M, m( t- K0 \: d: F
<VirtualHost 111.22.33.44:80>
# W0 z* B" ^0 hDocumentRoot /www/domain0 h. |( ~' x: w$ e0 Y; ]# x
ServerName www.domain.tld* t5 K: {5 T4 L' {3 y* I6 _
...
; ~: k+ s. `) Q; o; n" Q3 S</VirtualHost>
( b/ i/ |; S# B% f  p
1 Y) _1 |7 J' Y, S3 l' v- E! g# @<VirtualHost 111.22.33.55:8080>2 t5 q* f# V" P: G% F
ServerName www-cache.domain.tld
. q4 j' ?3 O# ^...3 J2 u& S# h' C1 M. S- I+ R! T
<Directory proxy:>' ^* d/ ?/ v8 o2 ^
order deny,allow; j: h5 E# s% Y8 ]- I; ?/ A- o
deny from all
! g/ ~  d; q) }# X8 i0 O6 `  i3 k2 Xallow from 111.22.33
* n' B5 c. {& d; ]</Directory>% k7 E3 s9 W- K" R6 [9 U# U+ [0 Z
</VirtualHost>1 p, I5 ]! ]) S: e: N

' H: g$ a6 `2 n- h  q * v8 l- P8 S1 @5 R4 n- z* V
- I1 M- u& P4 X! C- O9 V
名字型虚拟主机配置
( \1 x) ~: H( F7 g; V- B. o: p; c. U: f  S
Setup 1: 服务器有一个IP,+ D* U8 F+ _! r/ R% a% }

) U5 p( j" l+ o) E$ _111.22.33.44 server.domain.tld.
# _+ w6 ?; v& |9 C5 K( ]' S, B- Y: V) b, p
www.domain.tld和www.sub.domain.tld是别名(CNAMEs) 。 ! N( j- ~% R4 x' r8 r( _

" E) a: s6 n# w! Y- U/ Z服务器配置: ! U" W3 Q  g2 T4 |. x/ c- W, o

/ m7 [8 E  X; W5 h. @...
7 q# x, `' D' D" m. s0 l: u2 V# M$ L% M1 T
Port 80
9 S0 s& m1 h2 W# e: w
& \/ r3 s, Q3 d- q. i2 n+ uServerName server.domain.tld2 G4 e% u6 t6 P% R5 C) O& ^
NameVirtualHost 111.22.33.44 3 V6 i0 G+ `9 c, T$ x
: Z( a, u, T1 P* m+ H: Y$ Z
<VirtualHost 111.22.33.44>
: @6 u: L5 A- n* p; t6 k+ IDocumentRoot /www/domain
! L3 D$ |: D* T! nServerName www.domain.tld
% k$ A7 J8 R. x5 O...( [  \. F  {8 j' ~7 |
</VirtualHost>& v* [- d2 M) s9 F: A2 d/ A

( \! O& @( i* r4 s<VirtualHost 111.22.33.44>
# R+ e$ c, A3 S" n; j" E/ ?DocumentRoot /www/subdomain$ A' E; {3 o. x+ \
ServerName www.sub.domain.tld
6 P0 j  O7 J! I. J# }...
. n4 b  D6 S8 f: L# f% j) U</VirtualHost> 5 z) u* Y# C, @
5 M! n3 O" P6 p7 V
若使用IP访问服务器,由于 www.domain.tld 有最高优先级,被认为是默认服务器或第一服务器。5 y0 g# N' C$ L$ K8 D

( ^; J* q9 \9 K( g/ t0 sSetup 2:服务器有两个IP,% s+ J) a" C' b6 ?# }1 `7 S
0 P$ b& T/ B0 U1 A
111.22.33.44 server1.domain.tld 用于主服务器: s# s* G' D# N
111.22.33.55 server2.domain.tld 用于虚拟主机9 w7 Z/ a& q/ O" c$ U  i
别名www.domain.tld用于主服务器,* X% \5 V* S8 D0 e- n; n+ D/ b
别名www.otherdomain.tld用于一个虚拟主机,0 I! p7 ], ]5 B3 r' F' F
别名www.sub.domain.tld,*.sub.domain.tld 用于另一虚拟主机,4 o* Y6 ?+ a3 [* @% D8 f) T3 [8 m/ D

  P/ [1 B) M7 S服务器配置:
$ N9 k7 _1 |6 h! ^( p6 `
) D! E) L- z; D6 }' R, x, T9 y...
- Z5 d' I- c& S/ {7 e8 w: w8 E0 i. R1 |% J) S, v5 F
Port 80( o" y  S8 R1 {( i. Q# y6 M% q
/ y: i) D- }2 R+ N" [1 r
ServerName www.domain.tld
2 B& N1 j# \& r, t) TDocumentRoot /www/domain
$ L2 N' g6 E& \8 ^% A8 T1 MNameVirtualHost 111.22.33.55; s/ B; v' h( v3 {+ L5 j+ W
<VirtualHost 111.22.33.55>
. Y0 `& c2 |, B, M0 pDocumentRoot /www/otherdomain0 R* S5 }* D3 q. h4 P* P  T0 y" Y
ServerName www.otherdomain.tld
& Z8 k, Z8 \  c1 _...
6 ?! r4 [6 a+ g0 F9 r; J# h</VirtualHost>
. h4 y+ M2 h% @- Y/ @$ L% U7 e7 t- w; t, A( h2 y6 Z
<VirtualHost 111.22.33.55>  D! V" c$ H- T) v
DocumentRoot /www/subdomain
) s9 k; Y* ^" B3 U' wServerName www.sub.domain.tld6 E3 z+ n. S+ D5 Z" L& q& ~) |
ServerAlias *.sub.domain.tld
7 l: s- U6 r! b...
7 i- l$ C' L. o</VirtualHost>   y) Y* x0 |2 w& x
/ z2 O; C( N2 e' m# K
混合型(IP/名字)虚拟主机配置
& V! z( l) v3 A! Z4 i! S1 [. J% S. n7 `3 B+ R9 Q) ~! `. I
Setup:服务器有三个IP,
4 O5 u1 U. a( i/ ~3 |. h/ R. H" h; @: A5 c" r) \8 V+ w
111.22.33.44 server.domain.tld 用于名字型虚拟主机
# M; m+ v: U9 l5 ]2 F( b* I111.22.33.55 www.otherdomain1.tld 用于IP型虚拟主机
& r6 }+ \, p9 u# K0 G5 d* t2 @6 |111.22.33.66 www.otherdomain2.tld 用于IP型虚拟主机/ }# t' k: q9 J6 t( H$ W9 k3 f

7 ]6 C; e+ z0 X' e! E8 `$ z服务器配置:
' g9 K6 O. `; @2 N, v/ P...4 ~! O. j7 y  l7 q( `0 ^- d% W8 A$ ~' {6 r
- i+ \% _: c  e4 E: \0 |
Port 80* v9 \+ h; k; T! d/ F3 K# y
ServerName server.domain.tld9 U! M" Q6 Y) [7 Z& |1 Z$ S5 j- J

0 z" e2 u) I7 Z7 s* ~NameVirtualHost 111.22.33.44  s9 R  J, g+ v6 o

" S" s% [0 `1 s* ]1 B2 {- A0 b<VirtualHost 111.22.33.44>& H; e: E: ]# e4 B" _1 P
DocumentRoot /www/domain
- }  F) W" `, ?. b% `2 ?ServerName www.domain.tld+ h' @3 E# a, N* b9 j/ l! x& X
.... @- ]' m. R' v
</VirtualHost>6 G( p, e3 O' X; t4 z. k" I
/ U$ [- T  x+ |3 ^% Z, C
<VirtualHost 111.22.33.44>% Y8 H. Q4 g, Q/ i
DocumentRoot /www/subdomain1
$ q; u% d3 a5 w6 J2 HServerName www.sub1.domain.tld
: A& U' V3 v- ^: a1 ?; }5 H...
6 N( ?- c) V$ \% i1 E7 O8 F3 K</VirtualHost>
+ g- f2 v: `* F+ c/ C- G/ k6 C6 [& D; c6 e3 F0 Y4 g; y0 x( Y9 W
<VirtualHost 111.22.33.44>  L7 ^2 l5 \2 V( T0 ?
DocumentRoot /www/subdomain2/ f  }) D; H, q5 q
ServerName www.sub2.domain.tld9 N1 ~8 ]/ y7 ^5 `3 Z- C
...1 l: q! S5 j8 [- q5 `) c3 P7 D
</VirtualHost>
% A  A1 a" Q& m5 ~- M! T* {( j( Z4 @4 Q5 p
<VirtualHost 111.22.33.55>5 Z9 l, p' U' X! o& L0 L/ m7 m* @
DocumentRoot /www/otherdomain1
* R* k1 F5 g, P9 pServerName www.otherdomain1.tld# }) v" H( w* d7 S/ P/ c9 F5 }/ Q. d
...
; G# a0 m' P# Z+ T. w7 M</VirtualHost> 0 }& k5 \$ ?3 K
, ~1 T3 b4 c! N  P: t6 R8 K
<VirtualHost 111.22.33.66>
, W) w  a* x- C* s# oDocumentRoot /www/otherdomain2
" M% N1 k% R0 V% jServerName www.otherdomain2.tld8 ~1 F( G% H1 {& H+ R4 y# E
...5 {/ e" F- f+ m6 Y7 D4 q6 W* a
</VirtualHost>
5 b' @. p5 C. ^) O' J/ v" p( H" V  Z; H6 \8 ~9 [9 V5 ]5 ]4 K' @
端口型虚拟主机配置
: W+ y/ \3 S: K
/ u7 k# K, h( O* R3 M  ?4 }Setup: 服务器有一个IP,
3 N: d* i: b; W3 n0 s- B* }; v+ J( A
111.22.33.44 www.domain.tld3 J7 h1 P6 I8 u
, X: D" W  ]/ B6 D% }
不需要另外的别名或IP,采用端口型虚拟主机即可设置一个配置有别于主服务器的虚拟主机。
& N( W, ~# N) r& T$ o) j; ]
9 Q8 o% R6 r) x8 H服务器配置: 2 o' R+ d) a1 n! Z5 F! k
...# I2 y" t& P) S5 B6 O0 b

8 `8 l" j& r2 T2 S) a4 }3 tListen 800 S, p. z7 _. ^) j
Listen 8080
2 C% n, H; F6 l! k7 b- |, A% h$ m* X3 Y* @# c3 O
ServerName www.domain.tld
/ Q$ a! p4 `5 O% j( J% S3 fDocumentRoot /www/domain
  p: b7 T9 E' `2 C
6 d1 M% o8 ^9 Q$ L! n$ P: i, l<VirtualHost 111.22.33.44:8080>
4 [5 V6 [% v/ N$ m! d6 g7 b# H, IDocumentRoot /www/domain2
: a  o* ~9 |8 k/ I7 R6 s...
4 G4 _. R+ a7 Q+ w; Y, s* r</VirtualHost>
) ?; h+ W5 U- C- j7 Z* i6 R  x1 S( Y1 S- Q5 t( ~! L
 
% O& ~+ w3 P+ v7 E$ H# l7 S- h; q) X; g
来源:http://fengyu.china.com/Vhost.htm
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-2 12:16 , Processed in 0.019803 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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