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

使用Apache Server设置虚拟WEB

[复制链接]
发表于 2003-10-12 13:37:43 | 显示全部楼层 |阅读模式
unix 平台与NT平台使用apache server的设置相同。以下重点以unix平台为例- ~4 q4 X; [7 b# [
说明apache server的设置。另外值得注意的是,虚拟web的成功设置,有大约6 D* t6 u5 G2 H2 U5 \; h
50%的工作量是在域名的注册与解析方面。所以一般先注册好域名然后再做
5 L/ Q$ r; D, |; B- u虚拟WEB设置。
" I2 y8 U5 K; |  F1 s" V  D
' D! d5 a- _) v4 Q一 、IP型虚拟主机( j: V0 S4 u- r- q. M
, J+ O! {& {& L' a+ n
IP型虚拟主机指每一虚拟主机对应唯一的IP。可通过多个物理网卡或虚拟网口实现多IP,Solaris2.5和Windows NT都支持这种方式。
2 ~9 ]) [) t; @! a1 W' b8 m7 R% m# Z+ a. ]
两种配置多虚拟主机的方法:# _- G  D3 I& X; _5 G0 ~5 m

0 c: {' f. e! P' e1、为每一虚拟主机启动一个httpd进程。
9 z4 P$ d4 |% D/ m# ]- x2 x+ X
  C7 G+ G* _8 Y- [0 B( q下列情况下使用此方法:
- a% {; a- a3 d- G7 e
; K9 h7 X( S. f? 需考虑安全隔离问题,如两个httpd运行于不同的User、Group、Listen、ServerRoot,两者用户除通过Web相互浏览数据,无法访问其他数据。
" g, [( A6 V: t5 D- I* F$ C  w4 W+ S9 |& W$ ~7 x
? 能提供足够内存和文件描述器。5 E. Y5 U9 Z+ o: A6 T" _8 o9 V

# Y; a) ^7 p9 O5 Q设置方法:
* |! ?8 z3 o* @+ i, T/ A+ {
0 j- g8 Q0 D7 h7 {3 J# I为每一虚拟主机建立一个独立的httpd安装,在每一个安装路径的配置文件httpd.conf里,用Listen指令指定进程服务的IP,如:# m, Z" x3 j! ?2 J8 F% R

( g! k$ |/ r* ~2 e' j9 ~Listen 10.68.37.10:801 @4 N* k1 s  ~' w3 P) Z, N5 M
: A7 u: X2 p  P4 G- Q- j
2、为所有虚拟主机启动一个httpd进程。9 S4 c, O1 z( V5 ~# o7 X# e
; t+ S4 k# |7 n3 Y
下列情况下使用此方法:; I( C( h- E1 d8 h: x3 M1 O

! V- s: v  N7 u# n6 p& K$ {* Y* h? 允许在虚拟主机间共享httpd配置。
! _! \/ I7 E' L
( {) C% ?/ n" h3 e? 计算机服务于大量的请求,运行多个进程使服务器性能降低成为重要考虑因素。
6 q% Z+ g3 P0 Q3 h8 r% `5 U$ r, A
设置方法:
* Q7 v! L$ ?1 {# N5 B! t8 M% t/ G7 q7 ^
在配置文件httpd.conf里,用VirtualHost指令为每一虚拟主机设置ServerAdmin、ServerName、DocumentRoot、 ErrorLog、TransferLog或CustomLog,如:1 p& P; }9 R: V. F

/ L+ V1 g7 o4 z( C) x2 ~<VirtualHost www.smallco.com> #此处建议用IP
5 h0 e2 o5 _+ _9 v8 ?1 FServerAdmin webmaster@mail.smallco.com9 L: K9 Q% h4 ^2 c6 H6 ?0 d* @
DocumentRoot /usr/local/etc/httpd/htdocs/smallco" i3 U1 {# E; T8 I  r
ServerName www.smallco.com #建议此处用域名
% g6 K2 D. Q7 f, C4 qErrorLog /usr/local/etc/httpd/logs/smallco/error_log
& c- O6 R3 r- c. y2 F7 J$ W* fTransferLog /usr/local/etc/httpd/logs/smallco/access_log
6 [2 J2 T7 e, J</VirtualHost>$ ^  M8 Q1 W0 }2 a/ x7 F

4 K0 F5 _8 {8 p" O- r<VirtualHost www.baygroup.org> #此处建议用IP" S5 W6 t, I4 l: L& B  \! R+ b
ServerAdmin webmaster@mail.baygroup.org
$ R$ N: |, C# Y. H& l4 L: _1 zDocumentRoot /groups/baygroup/www+ i- y, ^- Z9 |
ServerName www.baygroup.org #建议此处用域名5 {' z0 R5 m$ @3 w+ E# H& A
ErrorLog /groups/baygroup/logs/error_log! i- z6 ?/ e9 m. B. b
TransferLog /groups/baygroup/logs/access_log
" }: g$ w: V& F9 o0 h$ {</VirtualHost> 1 b# x5 S5 b/ R) N  g3 ~9 M6 w
+ ?* O7 d. u0 t8 k2 r( n: Z
同时要做虚拟网口或网卡的配置,在DNS也要做相应设置。
2 {$ M5 m' g- i! k3 Z0 \  y
0 V% n! W3 x8 Y9 A3 z. s二 、名字型虚拟主机(Apache1.3以上版本支持)) C: G" N8 t0 u8 j! ~4 U' r% J
. n# M1 W% @/ t& e
  IP型虚拟主机虽好,但不是最佳方案。它要求每一虚拟主机有一专用IP,在某些机器上难于实现。
/ b/ c* A8 X4 ]5 W7 X, R) F& k2 j5 b, \# t+ P! r) x
名字型虚拟主机是指每一虚拟主机的名字不相同,但IP一样。它的好处是不限制虚拟主机数量,配置、使用简单,不需另外的软硬件。缺点是客户端必须支持该部分协议,最近版本的浏览器都支持,某些老版本浏览器不支持。但Apache为此提供了解决方法。! K3 e; X6 n- v2 ^6 N% k

& m1 @" x1 [4 t* g设置方法:
- d1 O( e0 e6 |7 v4 P; t* a! Q% S! }# U" F/ f. \( [
在配置文件httpd.conf里,用NameVirtualHost指令设置虚拟主机,如:
5 A) V7 Q4 h4 ]# T' y* ]6 |9 G; s3 X& l1 L. z9 J7 F3 `* o
NameVirtualHost 111.22.33.44
- ^! d8 M9 B6 u: K8 f
8 Z- M9 F1 T- h) }0 F; ^% y1 g  M<VirtualHost 111.22.33.44> #建议此处用IP# M: A' I4 e& K; s
ServerName www.domain.tld #建议此处用域名
4 Y9 T. b6 z% f* o* tDocumentRoot /web/domain* ]0 n9 Y5 k; ^7 s9 }3 @! \
</VirtualHost>
% v4 T3 c) Z, K( g
0 w' I8 M' r3 O0 P0 R7 n: D" ~同时,在DNS定义www.domain.tld指向111.22.33.44。+ l0 ~2 \; H" O2 H

! v  \1 D9 n! g$ d注意:当在NameVirtualHost指令后使用IP时,任何使用IP的URL请求都是针对虚拟主机的,主服务器从不会响应一个使用IP的URL请求。- D$ v8 [, A0 M, m

; f! q: l. A% N  _! Q/ ~. a另外,有些服务器希望以多个名字被访问。例如,假设有某一IP的服务器,希望以名domain.tld、www2.domain.tld都能被访问,做法是在VirtualHost指令部分使用ServerAlias指令。如:7 I" V+ N) _+ H; U) b

2 h5 A7 G  K, \- FServerAlias domain.tld *.domain.tld
6 d7 }' j* f0 E0 }9 k8 Z" Q) y) Q- A8 \/ |; F/ v
另附一些虚拟主机的设置实例。
- a: V7 Q3 f3 p
) A" E  R  {0 ?2 Z; X . V: }9 h9 a5 G1 ?9 Q( _* J
8 i. `% \! M0 A
 
3 Z2 z" Y. {8 C
: c1 t0 r$ c, J: s; o( ?5 U* L5 b附:虚拟主机设置实例+ w. H, s5 {$ O" N+ S: M
/ t0 F( m, ^& f4 f7 C7 y5 j! F( J0 R9 S6 [
IP型的虚拟主机配置, `5 T+ ~( Y+ U; c. U
* e" j; V3 `( d3 E/ T' @! p
Setup 1: 服务器有两个IP,
; k$ h/ w9 V) _+ h* f
+ Q. N+ k4 |7 ^111.22.33.44 server.domain.tld; s& S8 z% h4 [6 `" D- }) u
% q) T, x4 K$ [! ~
111.22.33.55 www.otherdomain.tld
# `" Y' p$ r8 N$ n7 X" X3 g) _
+ U9 E- C5 ^. W9 H5 S7 u3 X& Rwww.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。! m4 u. A+ D# X" L. z* P

# N4 \8 k# j& p服务器配置:+ j. H6 {( Q" K
' {2 [- }* W4 ?7 Q$ m  @' Z/ `3 N
...
& ?7 p5 ?! y+ z4 Y; \  B6 {% a' |; e0 u0 J( F4 q" P
Port 80" q0 Q: f& i& B* t# W3 r  v

8 ]5 X1 R4 j3 W' BDocumentRoot /www/domain+ v; ?: U; f2 S3 Q: M& E6 b' r% H
ServerName www.domain.tld, b/ M0 U, _* ]# s4 Y, o' @
<VirtualHost 111.22.33.55>! S" P; F! w2 j
DocumentRoot /www/otherdomain
: c- u+ V/ e9 o% t$ d. dServerName www.otherdomain.tld
4 I3 y- P+ |  a3 @# c...6 x, ^+ ]% f7 o$ b7 G" F
</VirtualHost>
; J: w  H( Q* X# U; s5 p1 U$ b9 _6 ?( g) X: D' M% S  f
Setup 2: 基本同Setup1,但不设置专门的主服务器。
# w% l; ~$ k7 F( [) W+ U: i2 f: D) ^
服务器配置:. W& ]& r6 o/ E' n' u5 ^$ n

! l% O6 J3 ^0 o) Q...
* F: r) {( Q5 t+ S: S( `8 g, p) j) H! U. G
Port 80' ^) @( H9 `' h/ B  Z1 v- L- Z

4 m( O! D# l' V4 z5 W7 @" v- Z2 ^ServerName server.domain.tld3 E- Q$ U0 E+ x  J, M
<VirtualHost 111.22.33.44>
1 X: {; T. Q* d; nDocumentRoot /www/domain) M! |; M  a: x5 P/ g. u
ServerName www.domain.tld9 ~" ]; e' M4 w( m" Z
...* \1 m4 ~5 V' }% S( K
</VirtualHost>
5 ?" M/ d1 [+ Y% k' n! P
$ r) S9 }8 H6 k, N+ j' L& A<VirtualHost 111.22.33.55>
7 C% I8 Q3 |) ?% l& v5 w! cDocumentRoot /www/otherdomain
5 U$ ~6 y, W' [, M8 g7 e8 }/ yServerName www.otherdomain.tld+ F* L' |: Z% @$ V/ c- S, C  \" K
...
# p  u, O) G" m! G- U</VirtualHost>& o0 u% f' G& L0 e9 c* s3 i8 R! Q# l+ m
  m7 R; U1 `( V% S" }
这种设置只有当URL为http://server.domain.tld时才击中主服务器 / l$ K+ [# T- `( R. ]/ Q% ?+ B$ I

: ^: b$ ?  [. Q: ASetup 3: 服务器有两个IP," `7 {  v" |  S4 {! n
; y' R" A* L$ d
111.22.33.44 server.domain.tld- @0 c3 p+ Z# l/ x" V8 _" a8 ~
111.22.33.55 www-cache.domain.tld
% f& d/ E& t" l* a1 Zwww.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。
, n7 |, S& U% Y* Xwww-cache.domain.tld是proxy-cache,端口是8080,Web服务器使用默认的80。
1 J* @+ O6 x, {
  D/ j1 M9 C) I% ?+ |! A9 {服务器配置: . w& x7 t3 Y3 ]5 g

- Y1 S$ ], A* K. b9 P0 D7 V- R% m...
4 E! _# g. i' E7 I8 V+ `& E# r2 [3 D" d$ Y+ _, F- `
Port 80
( l7 e1 B' h% O0 d. v. A8 d
: I- E; {" ^1 O5 V9 @  W4 l; BListen 111.22.33.44:80
: W6 E' i( J: C/ vListen 111.22.33.55:8080
3 f+ c" g, m3 |' N7 a' x( O3 v- h- M+ X: x. k& m8 k) h3 l
ServerName server.domain.tld
. |+ u* T- b& V* X0 l  a% G<VirtualHost 111.22.33.44:80>
$ P( G! B' s& [7 ]  v; RDocumentRoot /www/domain# f% }' c( C9 V$ z+ M: k7 b
ServerName www.domain.tld
7 _- Z8 M+ c5 i3 p8 h9 }  O  w...
( v+ U, ]: X( T</VirtualHost>
5 O0 y( t, T6 }. _! R0 ?  F
- r$ F6 R" {* @0 x<VirtualHost 111.22.33.55:8080>
, n# |4 U3 M% O1 jServerName www-cache.domain.tld
$ i. J" Q: ]1 E7 p9 V...- c/ E5 [- m1 i4 y8 I2 x7 Y
<Directory proxy:>
8 l# `+ e$ j" G0 @order deny,allow
4 O. A; f3 y$ |, ~deny from all4 {- r8 v8 ~' @/ j, w% r7 s' N5 ]) o+ \
allow from 111.22.33
1 r  {3 N2 c) e- H</Directory>: u  ^- e4 A% t/ t9 t4 v3 Q. _
</VirtualHost>, X, h9 o. s. c; x9 v; u
) L2 c/ N1 |" W4 k8 E2 B/ [, h
 2 ]. U9 k( f  m4 G0 |' D& J7 Y

9 d* W5 t5 |+ r. G3 b2 i) |! |名字型虚拟主机配置
+ C8 U  i; h  s' ~0 X
6 r+ l1 E/ j( jSetup 1: 服务器有一个IP,5 E8 [8 s+ h, J4 H; a& f
" D5 G0 X$ C( ^9 N
111.22.33.44 server.domain.tld.
& e: f9 l, `1 q4 h" e% G( E- \; u; g; k  X/ U
www.domain.tld和www.sub.domain.tld是别名(CNAMEs) 。 , S, S/ r: H& {1 T) F% A  B& W7 v2 U

' n7 H$ r+ k! z0 h/ I8 R4 x服务器配置:
, O, E/ t# T  C7 ?3 \
+ P+ y& U8 b0 j' K+ W" F8 y: ]...* B( J8 T* i; p0 ]2 N$ j- ]

( R; d3 Q" r9 W1 I7 u1 RPort 80! U, `9 ^1 [# J: e3 I4 o- x( b- ~

+ a; A  ?: ?( ~* zServerName server.domain.tld
8 }5 v, B; D/ L2 ]; v% ENameVirtualHost 111.22.33.44
/ }% q% A" u/ ]: r" |
0 L1 O" d6 i1 @( w" Z<VirtualHost 111.22.33.44>) \5 L7 p6 c) V/ L! i+ {  T; _4 s
DocumentRoot /www/domain
* \: h" _! s4 l2 q  Y( L1 AServerName www.domain.tld4 _/ [* n6 P/ z* X8 D% R
...
, p! d, \4 @9 ^1 K- j+ A</VirtualHost>
5 \' A( A# R) j- Q7 I) x5 E1 H, @' e7 D5 T
<VirtualHost 111.22.33.44>/ q6 m* F% m+ \) t9 d( Q3 t* h
DocumentRoot /www/subdomain
4 B/ N" x5 L& |ServerName www.sub.domain.tld# ?9 |! Z2 u5 t' K, ?/ Y
...
! a6 x/ w# o! j0 K% _: a/ A* d</VirtualHost>
1 d5 j* G4 A  e3 L! }
, n5 ^2 g0 ~$ g; K; [! i1 J若使用IP访问服务器,由于 www.domain.tld 有最高优先级,被认为是默认服务器或第一服务器。* h. w# K, Q: R. S; x6 y
4 ~/ N% B0 o/ c8 @- \
Setup 2:服务器有两个IP,
2 j2 g) v( O( H$ p$ ?' X0 P0 u/ V" ~1 a3 w
111.22.33.44 server1.domain.tld 用于主服务器
9 a& S# r) ]$ r" W3 q111.22.33.55 server2.domain.tld 用于虚拟主机
2 M, M, F* d- @& ~+ g% ~/ `. \6 k别名www.domain.tld用于主服务器,) _) n% d3 G4 K
别名www.otherdomain.tld用于一个虚拟主机,# `! S7 W( d+ i) A
别名www.sub.domain.tld,*.sub.domain.tld 用于另一虚拟主机,
! e' }7 O' ?1 X- j: g3 X# i7 ^% J$ w  O5 p# k: O* ~
服务器配置: 4 m) H' N+ Z7 g8 W8 m4 w, I) V

) w- T; H- H2 r0 i$ P1 K...
  D/ z4 z: K9 r; l1 @$ j
6 ?' m* y* A: Y5 R2 P+ ]" pPort 80
. \' q1 b7 B: o/ `  j/ h0 a% {5 R7 D! @% L* K' e2 m! W
ServerName www.domain.tld
8 C; x+ F, N1 p# ODocumentRoot /www/domain. S0 Q2 i6 x5 f3 \
NameVirtualHost 111.22.33.55. d6 X) N9 l8 N6 r4 c8 ]5 u6 a
<VirtualHost 111.22.33.55>
' P" P  Y3 h0 R" m+ IDocumentRoot /www/otherdomain
$ e, d* q4 N7 W" O2 GServerName www.otherdomain.tld9 \% H! _( k7 A0 i( y! E; S2 W
...
* U2 ?: W+ ^* p3 f+ E6 k( G</VirtualHost>
% ]. \- L7 h7 W, ~4 ]& s1 K1 Y2 a* g' B3 Q2 H( f4 W2 b0 \: u
<VirtualHost 111.22.33.55>
6 T! U) C' f/ H$ PDocumentRoot /www/subdomain
! \3 f/ n( [7 {& e. V2 QServerName www.sub.domain.tld6 i6 U7 V6 T* L7 ~. i% ?
ServerAlias *.sub.domain.tld7 h. u5 i" @9 F1 y
...
! `; ^1 V: v) n/ H5 F5 w</VirtualHost>
% S# V8 L% ?0 I3 Q6 R
, P( f% j) t+ J混合型(IP/名字)虚拟主机配置) ^, {# p7 i  J8 @, d

0 ]( N. d( e3 F  ?, S# T; bSetup:服务器有三个IP,
* [$ O5 w9 O- _, q+ R" L
! T2 u9 k! t6 u% P) e: N111.22.33.44 server.domain.tld 用于名字型虚拟主机
, B0 ~/ a+ X/ Z  W111.22.33.55 www.otherdomain1.tld 用于IP型虚拟主机' j7 f) f! R3 @2 @; u
111.22.33.66 www.otherdomain2.tld 用于IP型虚拟主机  S' {9 t& D4 K0 X0 m5 e
( D+ T- w/ }. e
服务器配置:
! A5 t7 l  l& x) g. V7 W6 Z# E...% T9 U" _- _7 V4 b$ v. ?' t! m& p
% q% W" C. v& k4 a/ p
Port 80
3 `' \$ Y  D% ]8 [( v# c2 k. N9 tServerName server.domain.tld
7 @2 p, A  ~! o: [9 m
% h$ A, }% U7 VNameVirtualHost 111.22.33.44# D4 H/ c$ d% C- A- G3 A0 T
" J! V3 T$ g( m) Q9 Y
<VirtualHost 111.22.33.44>; l+ g1 E* f8 b0 U
DocumentRoot /www/domain
9 \1 C/ k- o! z9 a9 L; `ServerName www.domain.tld+ f7 Y) C" l  }' l. @
...% r6 ^) Z/ {( o% ]/ d1 ?
</VirtualHost># j- W# k+ V2 h" C  p" `2 a9 A
4 a! g2 ~2 r3 ~3 S
<VirtualHost 111.22.33.44>( b& w1 }/ D' D. R& S
DocumentRoot /www/subdomain1
% L. l: X4 v% lServerName www.sub1.domain.tld4 y* T/ v$ W" n) Y
...2 U' a% ~8 c' a4 G  E1 q
</VirtualHost> : t$ ]9 F" Y' n& A6 @/ Z8 u4 S
/ l6 z5 p3 l1 s0 p2 `  w
<VirtualHost 111.22.33.44>& u" `' z% X8 ^( _
DocumentRoot /www/subdomain2
3 m# V" ~# i' S+ R7 j  J: z; O# tServerName www.sub2.domain.tld* m; \% v7 @' H" Y9 C8 C
...
& r; |% Y' M( T0 b: w6 ^5 r</VirtualHost> 1 C1 P3 a* w( T! B7 a2 \( W

, B% _7 l1 E3 v2 v$ s$ Z<VirtualHost 111.22.33.55>7 H# O7 u/ E. {
DocumentRoot /www/otherdomain12 j" b+ E" u9 x' |, h& }0 Z
ServerName www.otherdomain1.tld
* K0 X3 f# ]& G3 L5 J( o- i...
! U. {+ }5 f+ e0 w; I/ D</VirtualHost> 8 l) n+ B, v1 X
" @& o- y1 ?* T1 l$ K3 r
<VirtualHost 111.22.33.66>
" e% r% T& y% c& mDocumentRoot /www/otherdomain2
) o% f$ q. Y" t7 S( D. e. gServerName www.otherdomain2.tld
% a6 F- D# L3 m* \  C! o) v0 z3 \.... `  Z' D0 w3 y, m* P+ O
</VirtualHost>
/ H4 g5 N9 q& p7 F7 [( Q4 ]4 r  H1 B6 ?2 K6 v
端口型虚拟主机配置
8 e( S- V* Z4 r0 W' |0 B; t
1 q# m7 C( ?7 d* m) CSetup: 服务器有一个IP,4 d/ f) U) t! X3 Y% _0 o& v. n
# y6 x$ A7 ^, x0 ^. }8 r- o9 k# c
111.22.33.44 www.domain.tld
! _3 I1 K" _/ B5 \6 C0 M) K2 [% @9 w, K( b& D+ Y" s3 G
不需要另外的别名或IP,采用端口型虚拟主机即可设置一个配置有别于主服务器的虚拟主机。 . J' |% ], T* @2 G

, Z% `/ W8 m$ Y# i服务器配置:
9 Z: U; u! ], t( ]9 B% u$ H, m...! @7 @, a. N$ |6 I
( ^, Z- q$ W- U( W0 A+ }
Listen 80
8 ?7 y1 R/ r/ ~- N, RListen 80801 U. Y# W, m9 j1 B: O5 j7 X

7 {7 F8 D1 S" `- z& g% B1 C/ xServerName www.domain.tld. z( F. R' |5 L( }( Q
DocumentRoot /www/domain" O9 v& R, \& A% Q* e" J7 v
% X4 }3 h; C4 @, P' A
<VirtualHost 111.22.33.44:8080>
9 M* v* K# M6 U4 }2 cDocumentRoot /www/domain2
% z( p( c" Z& |: N...& a% R) ~- o+ O9 a: q! J8 i2 o
</VirtualHost>
/ j+ ^3 J" c1 @7 @( R+ O1 M/ U! Z, p. v3 f8 {/ D8 n3 a/ f# w8 T( ]
 2 l- a9 p* a, Y3 z9 b7 D3 g

5 B) V, N! R8 c7 ^  f来源:http://fengyu.china.com/Vhost.htm
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-13 22:35 , Processed in 0.019109 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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