|
|
unix 平台与NT平台使用apache server的设置相同。以下重点以unix平台为例
+ }1 p' Y9 L1 d( {" A e v2 |说明apache server的设置。另外值得注意的是,虚拟web的成功设置,有大约+ i9 r" \; ^5 C/ d+ K2 a9 V; O
50%的工作量是在域名的注册与解析方面。所以一般先注册好域名然后再做
0 Q+ x5 n( A, D- @) R1 b9 I虚拟WEB设置。
2 s- J. s& R3 [6 a( s0 C) z
3 D" G' C7 r; {/ b一 、IP型虚拟主机/ J$ M4 w4 T' E, r
9 l) N! E8 Y# r( T! ^& E( CIP型虚拟主机指每一虚拟主机对应唯一的IP。可通过多个物理网卡或虚拟网口实现多IP,Solaris2.5和Windows NT都支持这种方式。3 }0 M! w. m! q: F: R
) Z: _, U: _3 L' j9 @, K
两种配置多虚拟主机的方法:
) v" u0 n% X4 n% `+ J/ y# B7 f
; o- V7 _4 Y& v1、为每一虚拟主机启动一个httpd进程。1 @- O5 T y; o3 o
0 W+ z& G$ a0 d9 j$ ?0 d
下列情况下使用此方法:
; p/ S! P6 c) b+ Z' e: n g% p+ @5 p6 d3 E
? 需考虑安全隔离问题,如两个httpd运行于不同的User、Group、Listen、ServerRoot,两者用户除通过Web相互浏览数据,无法访问其他数据。( ^% |4 i4 a, [7 K9 Z0 X- |0 d, o0 G( r
- ~1 T: h' A. P9 P! Z
? 能提供足够内存和文件描述器。
6 X; A4 ]) `& P5 b
3 N2 @: S0 W" S8 A }( F# `0 \设置方法:
% |" Y# h( ?8 x* \
+ _9 w( y2 u+ h4 }6 @1 [+ S为每一虚拟主机建立一个独立的httpd安装,在每一个安装路径的配置文件httpd.conf里,用Listen指令指定进程服务的IP,如:: i0 y8 {# V b6 d/ i
3 ^1 z# z, Q, |7 e; U& V
Listen 10.68.37.10:80 O, \8 \ Y* L- \3 D* b: n
n+ k1 ?, j m4 C- s" F2 H
2、为所有虚拟主机启动一个httpd进程。
6 z$ E% R% `% b1 O. ~
8 T8 b4 A. j7 ~下列情况下使用此方法:
" q: q2 }3 q; @; \/ b+ W" R- g* e! q" R: @& u$ v( r
? 允许在虚拟主机间共享httpd配置。, S I. r9 L, l# y2 I; r# U8 h
( [& z- l" l8 i
? 计算机服务于大量的请求,运行多个进程使服务器性能降低成为重要考虑因素。6 V: I+ x( L6 J4 f
* @2 Q: _8 J. L
设置方法:' l$ t/ [! q- C* j- x
' ?, ~ y3 d6 _4 f
在配置文件httpd.conf里,用VirtualHost指令为每一虚拟主机设置ServerAdmin、ServerName、DocumentRoot、 ErrorLog、TransferLog或CustomLog,如:1 G1 p9 h4 t/ f) h4 R$ p6 y0 F ^
. {" A; R8 B8 q0 ? g<VirtualHost www.smallco.com> #此处建议用IP# J) ~% N1 c% |$ @7 k8 n8 |0 b
ServerAdmin webmaster@mail.smallco.com
0 c! G+ [* i0 W: Z3 t+ eDocumentRoot /usr/local/etc/httpd/htdocs/smallco
' _' B4 l- a5 d! wServerName www.smallco.com #建议此处用域名 \) _) b4 j4 X/ N {+ V
ErrorLog /usr/local/etc/httpd/logs/smallco/error_log; N& d- @4 P8 Z, Z/ O1 `
TransferLog /usr/local/etc/httpd/logs/smallco/access_log
: U! c) M! s7 r/ O5 X& k& z& d% g1 i</VirtualHost>' u+ L: I7 L0 i) o, c4 H
+ Y9 F5 j: X. j# Q<VirtualHost www.baygroup.org> #此处建议用IP
R9 r$ k% H4 x k, XServerAdmin webmaster@mail.baygroup.org
; M Z! }' \3 V' S5 s% iDocumentRoot /groups/baygroup/www
5 {9 [6 s _; o. w% O9 {: O! X& f4 ~ServerName www.baygroup.org #建议此处用域名
% e- z7 m' {, k+ V8 {; k7 d: cErrorLog /groups/baygroup/logs/error_log
8 {4 ]0 `/ I* t4 ATransferLog /groups/baygroup/logs/access_log/ {0 D7 d; J9 ^( Q& X& ^+ \
</VirtualHost>
( a" F! l* E" o
7 ?* e' m! C( d% M3 S, M% Z同时要做虚拟网口或网卡的配置,在DNS也要做相应设置。/ h+ |5 F( p( ^
0 X3 E7 F! V0 m0 C. ~9 k二 、名字型虚拟主机(Apache1.3以上版本支持)" g: G5 A) U2 D* \( B* Q( r, b: W
& j* Y3 { v. G: ^+ S IP型虚拟主机虽好,但不是最佳方案。它要求每一虚拟主机有一专用IP,在某些机器上难于实现。7 `- Q0 k2 t) Y" Q" h+ G
7 i: O. V" U0 s% w( \" _$ f1 Q& u
名字型虚拟主机是指每一虚拟主机的名字不相同,但IP一样。它的好处是不限制虚拟主机数量,配置、使用简单,不需另外的软硬件。缺点是客户端必须支持该部分协议,最近版本的浏览器都支持,某些老版本浏览器不支持。但Apache为此提供了解决方法。- a* p' k4 j% {/ n+ O1 f
6 ?+ t- G" T5 }' ]0 B/ Y; j) Z# M设置方法:9 s0 L% h( J0 y) ]
1 m. K% @8 @" b% D, O( C在配置文件httpd.conf里,用NameVirtualHost指令设置虚拟主机,如:1 J# E$ B# [4 A
8 o# }" k% s% U% b6 |
NameVirtualHost 111.22.33.44
) `, B4 j3 _7 A1 w4 P; k) P/ o8 M% E( o6 ]6 D! i
<VirtualHost 111.22.33.44> #建议此处用IP0 r4 _! t% l6 V
ServerName www.domain.tld #建议此处用域名! R- X8 E: Y# x5 k9 m9 B
DocumentRoot /web/domain" e0 i' t) r! G6 q
</VirtualHost>* w- l5 s2 h d2 d6 [
- R9 C( {( A4 V3 P) [0 \ U* K5 ]
同时,在DNS定义www.domain.tld指向111.22.33.44。
/ f/ z7 ~# d8 J1 F) |) e
3 g/ V3 e- x, Q: ~6 I3 \, s注意:当在NameVirtualHost指令后使用IP时,任何使用IP的URL请求都是针对虚拟主机的,主服务器从不会响应一个使用IP的URL请求。, i) V: H% ?3 A6 e$ b. o9 Y* C( N
7 @8 B/ v* k+ G( Q
另外,有些服务器希望以多个名字被访问。例如,假设有某一IP的服务器,希望以名domain.tld、www2.domain.tld都能被访问,做法是在VirtualHost指令部分使用ServerAlias指令。如:. S9 K" a5 j# p7 o& y
7 K" u% e& c% @- d. \ServerAlias domain.tld *.domain.tld7 F. @" B- |' |, X4 W( ~4 o7 a8 k
b( h0 {9 m: G: q% D# T9 J5 R另附一些虚拟主机的设置实例。
1 h) ?9 Q- M& o% F) k6 a+ K4 Z/ {6 W$ ^; `
0 N8 `, ]& s( ^- h. o) U; B
7 h3 Z4 ?( H3 U W: D( b
; l" l2 D( P$ k- |5 X. g4 i# q
1 |2 h! W( Z! H1 K- B+ O1 G" Y附:虚拟主机设置实例
; @7 \' a4 D$ p0 [' I3 o. \7 q/ X+ b# A/ w5 [( S% q: a" M
IP型的虚拟主机配置
% [( a9 `/ |0 ?. y; M1 l% B. o, K& c
Setup 1: 服务器有两个IP,
6 }% B( |7 [' o2 @) J: V; [4 d# A$ [5 m9 A( ~6 d
111.22.33.44 server.domain.tld
& q0 y/ x$ a* v) ?! Z
2 O& O' h4 b; G) W$ O4 P( y. n2 ~111.22.33.55 www.otherdomain.tld
3 P: ~0 k4 Q: S3 p- V' j( ?& U4 m" m$ S
www.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。
: f; T w$ V: r
. `; Z; O y- A服务器配置:
$ S' n' R2 }9 G7 O/ n9 H) n& C" Q
...
. w/ G3 f# G& a B1 S
: T @6 n' j" ^2 b; B4 QPort 80 h! I" ?* T P. m) m% `: W/ m2 i
1 k3 s# ?1 I4 H8 k* l/ y m
DocumentRoot /www/domain5 \: I9 ^2 w N8 K6 Y' S% @8 d- y( ?
ServerName www.domain.tld% v w! I% m X/ L
<VirtualHost 111.22.33.55>( f- u# m c" l6 F1 A# Z: s0 a* Y
DocumentRoot /www/otherdomain% Y% l; ]( C( q: C, y
ServerName www.otherdomain.tld% F+ V i" R( J2 |4 Q
...! E. Y% h+ S8 g8 {. [
</VirtualHost>/ N B' a7 S1 T6 X+ N
5 r0 i) ~" K8 T$ I, ^% _7 M4 @
Setup 2: 基本同Setup1,但不设置专门的主服务器。- D; B$ C5 o% [: m# ]6 a% q
0 k6 @/ \3 y' A3 _: D服务器配置:
. f6 x0 w6 o# w7 s& S- d$ Z
. U5 A& }- W" s...' x8 z0 I9 Q* F! x! A, N
( q9 i/ A0 y1 o. P; G \: w
Port 80# J# L- z2 u+ Q2 f
. S- T% m7 M: R' C0 P. u# }1 e) RServerName server.domain.tld/ m8 U' N9 X Z" n. h+ P% A& W
<VirtualHost 111.22.33.44>* `! C' P2 F7 N+ @; y6 A- h
DocumentRoot /www/domain: l" Q( q9 Z& Q. T
ServerName www.domain.tld
, Z, j( v! ]) Q- O9 N8 Q1 ^...
' R3 r) _' F/ ^% z2 z/ X</VirtualHost>8 M+ D- Q/ u' d7 L+ i
4 y! e+ h ]7 ~/ c3 T* L<VirtualHost 111.22.33.55>
' K( L5 J9 P4 a+ J: b/ t, SDocumentRoot /www/otherdomain
/ J& d# [' a/ u3 J$ OServerName www.otherdomain.tld
c4 P9 e. \' _7 K# j...8 `2 R* h* ^) V( i& y9 U
</VirtualHost>& v2 G/ }+ ?1 w* R' e1 R$ C
, K* H. N E; j2 u# `/ N( O* i
这种设置只有当URL为http://server.domain.tld时才击中主服务器 ; V! L1 J, y. q2 \
# }# L+ e+ y. c7 E2 N' W4 J7 fSetup 3: 服务器有两个IP,
* t! @ U$ } d! X1 V% \1 {( U$ i4 _6 V- U- \
111.22.33.44 server.domain.tld& G1 n3 @7 d' C( H( v5 E
111.22.33.55 www-cache.domain.tld
/ F% S* p- Z% C5 J4 Zwww.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。
l* Z1 p3 z# vwww-cache.domain.tld是proxy-cache,端口是8080,Web服务器使用默认的80。
2 t) c( G# C+ q$ e
6 T! w1 J/ o6 F1 X4 Z- C服务器配置:
/ f) j+ {+ ~% s c4 w/ F$ m2 Q& \; z+ b( ~( b% _
...- R- [9 n" _9 B2 [
' Q2 L0 Z4 ^1 T5 }Port 80
% ~) C! d+ x; u( o% o! F3 w/ F0 x; S
Listen 111.22.33.44:80
- g9 e7 O( p) w$ [Listen 111.22.33.55:80808 A7 J& r; h) W: N# |, n
3 `/ l3 x4 j9 V2 V) o& a kServerName server.domain.tld
* _# }0 Q% | s& m9 J<VirtualHost 111.22.33.44:80>$ X! `# n0 o4 g. h1 W. Q
DocumentRoot /www/domain; ^6 {6 E: U" @' R4 [
ServerName www.domain.tld
+ ~$ e" V: T4 g...) n8 H" S5 {% v5 x) l
</VirtualHost>6 |; o6 Q! `7 B$ C
& P2 c3 _4 }1 m" Q, y3 F! l% k' n
<VirtualHost 111.22.33.55:8080>9 `; K. t. P, G3 V M
ServerName www-cache.domain.tld
( I2 N B- N) K1 s+ |...
" J4 N) i8 e- H6 G<Directory proxy:>7 s# c# }3 ~ D: o8 K6 Y
order deny,allow
1 D. @ c. G. \( D' r" o# cdeny from all7 D9 }) T! D0 b1 I
allow from 111.22.33+ A6 z2 ?7 n- Z& N A8 Z
</Directory>
: w9 x# Z2 i* K</VirtualHost>
) C6 B6 y, R0 @' o: W4 |7 W6 K7 ^
/ l4 N! T' m5 t% O. D, t ( S' n% N. h( o9 p: s V
( Z) v! g# U3 d: A0 Q' u7 y
名字型虚拟主机配置
( n% d' [6 l: f* [ i0 `0 }$ s$ G8 z0 M
Setup 1: 服务器有一个IP,
! }% D, E, u S2 u4 p/ p# c0 T Z( f; I/ O, T& m, {/ v0 g8 s* y* c
111.22.33.44 server.domain.tld. 9 u% V$ M% m- N
, `: T& R/ t# g
www.domain.tld和www.sub.domain.tld是别名(CNAMEs) 。
) I3 i! W, ~. }* N0 @9 F2 V7 o" v6 N9 ?8 f4 z* h
服务器配置:
! |3 h1 i6 a! z# O4 ]
6 _& D2 J1 d: F' d/ j1 d7 u.... R" E6 s- V7 k/ d
|* V: t( w) \7 @( }$ h7 i9 TPort 80
4 \& y, S3 B" O7 e8 |; F& z" z3 x2 U% I# g! L; G* n
ServerName server.domain.tld
0 E, O* A) @, `9 D2 J. z. M( HNameVirtualHost 111.22.33.44 ' o6 k7 Q* ^1 h& z L- k
0 g: \: J& E. \: k<VirtualHost 111.22.33.44>
$ j$ ]- h0 o9 ~9 aDocumentRoot /www/domain- [+ j' V, N: O2 B9 { u: \
ServerName www.domain.tld
* Q9 @5 G- d( c! @0 b1 n: S...
8 g% ]: [9 \6 p9 C6 B</VirtualHost>
b) q5 Y9 l2 ~! k2 c* w6 Z/ g. y
0 a* q ~: n }5 Z S/ f7 Z<VirtualHost 111.22.33.44>; Y f1 J- Z+ S: a2 n
DocumentRoot /www/subdomain
1 f# c) e8 W1 r/ D; NServerName www.sub.domain.tld/ E2 A% z( B) P4 O) b- h. I; G8 ]4 e
...
' W+ y% T1 @$ d</VirtualHost>
+ O5 ]8 P) P8 u) j c$ y1 p1 [& a& p# I# _0 n
若使用IP访问服务器,由于 www.domain.tld 有最高优先级,被认为是默认服务器或第一服务器。
% x# H! @* ~# k: i( _$ {' V4 Q! M/ d
Setup 2:服务器有两个IP,
! f8 V! ?4 q* M, X4 @: p- |" C }6 B7 t5 i
111.22.33.44 server1.domain.tld 用于主服务器
! U+ z6 V, X/ g0 r& o8 y- @# A111.22.33.55 server2.domain.tld 用于虚拟主机
, A1 V/ Y, B2 K, B$ E别名www.domain.tld用于主服务器,- |) o: D' O% A4 h. o0 s; G2 F
别名www.otherdomain.tld用于一个虚拟主机,
- k! [: p( P) ^- R别名www.sub.domain.tld,*.sub.domain.tld 用于另一虚拟主机,
) ]5 C$ R g1 C8 l2 {
" h1 d1 X, f4 ?% u% r/ ~服务器配置:
* o7 W9 l5 Z: S" J# n/ m/ c* U7 u8 o1 _2 x+ ^ ^
...
2 `7 C, u) S3 f& l7 G' F T8 W" a; d$ h0 m& d8 C6 [
Port 800 C6 S" N7 k9 b/ g0 i& J
2 O, C& A7 d( v! ]
ServerName www.domain.tld7 Y- n# B3 C% O+ c
DocumentRoot /www/domain
: z/ M( R# |$ |+ e5 UNameVirtualHost 111.22.33.553 Q1 B1 J0 M. z
<VirtualHost 111.22.33.55>/ A0 p4 I& i/ s0 q. g+ r+ H6 Y7 o
DocumentRoot /www/otherdomain
- e4 o- V# v: e" {ServerName www.otherdomain.tld( S2 d: B* J3 C
...5 o: z% k: ?0 j. O2 G" _
</VirtualHost>
/ @( ~4 e$ d' X& T0 n2 _, c2 s6 t2 L9 \- T; I" d8 j
<VirtualHost 111.22.33.55>
( W( A/ _- |% e6 [% hDocumentRoot /www/subdomain! o1 ]7 @! I& @) ^! @
ServerName www.sub.domain.tld
1 T" f2 z0 n# U# t7 R* Y# {+ W" DServerAlias *.sub.domain.tld) J7 q R: ]6 {6 f: v5 e
...
8 `; T0 e$ [2 f7 x: D</VirtualHost>
@9 b1 f/ S+ G/ g& p: C3 U0 P) w* r9 J% w1 C2 R+ |9 ^0 |
混合型(IP/名字)虚拟主机配置; E: J/ L1 h6 S3 _' _
8 R4 b9 y, I8 L! L# u
Setup:服务器有三个IP,% \/ [' _# r* D3 |4 L
) H3 u7 w- I# q$ \
111.22.33.44 server.domain.tld 用于名字型虚拟主机
- z9 |5 o. c( ~; u: r" ]111.22.33.55 www.otherdomain1.tld 用于IP型虚拟主机, l2 M) D, L- Y5 I7 P( ^4 F4 Q
111.22.33.66 www.otherdomain2.tld 用于IP型虚拟主机3 ^" i# W, D8 A
; F y- l5 r# k% Z' K
服务器配置:
: U: w w/ l* D; x( f+ E8 U. ^...
1 N! b6 q6 `5 a2 f3 ?# n6 {
1 C5 F2 R, l4 }* @4 R" q4 SPort 803 N5 m1 z0 N/ ^* B# A
ServerName server.domain.tld
# F7 V1 N; K4 t7 ~) k! l: A
+ e" r9 N1 @% ]NameVirtualHost 111.22.33.447 M. E; D6 Y ]# |5 H/ }/ K1 t
- k( R8 p: I* P/ R
<VirtualHost 111.22.33.44>
. q, P/ X# J' J% c& L$ lDocumentRoot /www/domain
& b9 p% y' Y; t( YServerName www.domain.tld+ J8 j5 |2 S) z# `$ j$ k
...
% x3 _: v! F. ~: i& J2 _; E$ d</VirtualHost>
# v, h7 g: ?% |
1 u% ?) }% Z0 @; t: J$ V<VirtualHost 111.22.33.44>
( g& \' [, i8 t$ r/ D2 tDocumentRoot /www/subdomain1& S6 P: a- }; V6 z2 O R. W
ServerName www.sub1.domain.tld; s. r# a E/ c! D4 O g
...
6 k* h0 i1 n! j2 O- S</VirtualHost>
5 n" s9 E6 S* K% h+ Z U- o
6 _! }7 p! J, G: @$ l4 {' U<VirtualHost 111.22.33.44>
, f& s! z: ]$ q1 @" d' B2 hDocumentRoot /www/subdomain2
' _3 s! @( F6 N) JServerName www.sub2.domain.tld; X7 N6 P+ e) ]$ V
...
# Z: K. N a- _% }9 \- ]# i* p</VirtualHost> 3 ? A: Z& w+ P& r, K- I
7 h/ C: t5 c3 u# w5 P4 u/ t$ g<VirtualHost 111.22.33.55>
+ \: x- f) a2 j7 M- v$ f0 _5 [DocumentRoot /www/otherdomain1
! U% h; ^1 S& q/ s& XServerName www.otherdomain1.tld" m* |3 ]- F& ]6 t
...
' Y/ r; E5 J$ h2 p% s- t</VirtualHost>
/ W" ?: K- ]/ M6 O. p1 t/ [7 Y$ d, Q
<VirtualHost 111.22.33.66>& }2 [2 z* w, V6 g6 l% Y. N( Z
DocumentRoot /www/otherdomain2
! o# R# |" a* w" K- D8 d7 OServerName www.otherdomain2.tld$ G/ G9 i* M7 q; l( t
...5 X; R+ r r5 _6 i- q3 S# w* \0 z
</VirtualHost> , C- i4 I/ [& W4 F2 C e
- t" P- \* T. M/ z; u5 ~3 }6 E9 X! w
端口型虚拟主机配置
6 n2 `' U0 S$ g. v* c; j7 ]& [' D) ?$ Z( C P9 `7 K k' r8 ~
Setup: 服务器有一个IP,* }; r* Y4 H( |2 s2 t+ t
) S0 }" A% c+ G
111.22.33.44 www.domain.tld
4 i6 ^5 c2 V" J- G2 U3 W/ ^9 \5 u' I9 O+ x3 q& o4 P
不需要另外的别名或IP,采用端口型虚拟主机即可设置一个配置有别于主服务器的虚拟主机。 + q8 E3 ^% } q3 I+ g
7 @ e3 N" I8 M# b9 [) c服务器配置:
' O% Q {5 r! R U; \0 @2 T...
. M# P; L* P) \2 y* l0 H, S
, j3 t7 |* l {& m5 h3 s4 }+ UListen 80
) _+ M( H: r& q# b" q0 gListen 80801 O; ~/ I/ o+ ^! N/ U/ A$ ]
9 y5 v: Y, c& \. I0 J8 B! [ServerName www.domain.tld8 I/ \3 B4 F+ T: ~- j# u8 e# H- }. p8 ~
DocumentRoot /www/domain
6 D# Z: N* A9 n1 V& }8 j- z5 G7 Y0 Q, m$ P1 r& D D# S
<VirtualHost 111.22.33.44:8080>
; J0 X7 T1 y( p0 m, BDocumentRoot /www/domain2% `1 J+ U! R* _+ ^8 w; i( ~1 L
...
8 v4 K2 O+ G) J+ w, I3 t7 ?; x! ~</VirtualHost>$ S" `8 K/ N+ j) I7 A& w$ d
: c- K6 m g$ H5 { s1 U
& j6 w2 m- i7 i: c& x4 I6 }
9 c. m# n K7 ~! S来源:http://fengyu.china.com/Vhost.htm |
|