|
|
unix 平台与NT平台使用apache server的设置相同。以下重点以unix平台为例
4 a8 t7 }) W! I: x说明apache server的设置。另外值得注意的是,虚拟web的成功设置,有大约
, m5 R5 r6 _% {% f4 t50%的工作量是在域名的注册与解析方面。所以一般先注册好域名然后再做& z1 G, }! a) y" e+ N
虚拟WEB设置。' h) O Y" E, m
% ?* }7 F" B3 H( W一 、IP型虚拟主机
+ t3 l* E+ l" `+ x
. X5 }6 N# {5 `' h3 oIP型虚拟主机指每一虚拟主机对应唯一的IP。可通过多个物理网卡或虚拟网口实现多IP,Solaris2.5和Windows NT都支持这种方式。
2 m, n0 Y& Q, r$ g& l! p, X
* @, F$ u0 O& @+ ~8 J! Q/ x两种配置多虚拟主机的方法:& a { r, l0 F7 F
! e2 J7 V8 b# {! i8 n; A
1、为每一虚拟主机启动一个httpd进程。
; A, ?) a3 J; ^( l5 z+ d. ^0 r
4 S' M( q7 W$ Q6 S下列情况下使用此方法:
, p* T2 h4 v' Z7 H. m# I7 m/ P% d6 H. v) j! `# w7 {2 J0 R* c
? 需考虑安全隔离问题,如两个httpd运行于不同的User、Group、Listen、ServerRoot,两者用户除通过Web相互浏览数据,无法访问其他数据。% w3 a0 h! t. D! r1 x0 u
- ]/ V9 z" U3 T, c. @0 S? 能提供足够内存和文件描述器。8 U1 ~6 j# q% K
. R' O! g3 O) v. C% I7 b2 w设置方法:' \# q+ X1 b' U' c# R6 k
2 S6 ]2 g# Q/ j. M; S) c# m. a为每一虚拟主机建立一个独立的httpd安装,在每一个安装路径的配置文件httpd.conf里,用Listen指令指定进程服务的IP,如:
: R5 k$ t9 G S) u% `7 X: D- b+ e }+ r+ ~$ d5 ?: r: [" m9 e' F, E
Listen 10.68.37.10:80
4 h, }/ D# B% a% F, A7 d' H
8 T; m& p/ k; i( f: z2 A5 |2、为所有虚拟主机启动一个httpd进程。
0 x0 o' H/ a) T" S
! e5 O: K: K! w下列情况下使用此方法:
' L" D. [2 J- C) B
0 L- }9 l) c/ }6 g? 允许在虚拟主机间共享httpd配置。& |% h/ w6 p6 \/ ]% [
( d0 N m" ]7 s. | f* P$ X6 n" {4 P? 计算机服务于大量的请求,运行多个进程使服务器性能降低成为重要考虑因素。
- ]% Z4 F2 o+ }( n$ ~! ] L/ C" \5 |# l2 y* L. T9 @+ \" d( v
设置方法:
. i3 C3 V) u, u; k8 B1 g& Q! |/ H$ L& M6 G" Q* [
在配置文件httpd.conf里,用VirtualHost指令为每一虚拟主机设置ServerAdmin、ServerName、DocumentRoot、 ErrorLog、TransferLog或CustomLog,如:
- o) {) b5 l# }$ Q, g F6 p- T7 r
' y7 q6 I! _# }$ L<VirtualHost www.smallco.com> #此处建议用IP
6 A; y4 x" v% J8 j) G$ uServerAdmin webmaster@mail.smallco.com" a; z! c& P( {" ?1 f$ n
DocumentRoot /usr/local/etc/httpd/htdocs/smallco |5 x8 q7 M) M8 @- k& F
ServerName www.smallco.com #建议此处用域名' ^4 D2 k) s8 d( q1 S
ErrorLog /usr/local/etc/httpd/logs/smallco/error_log
) i* _9 o5 _, J2 O% FTransferLog /usr/local/etc/httpd/logs/smallco/access_log. e" @% p* K- v1 F3 W6 e
</VirtualHost>9 q$ V2 A) N6 i$ O
+ r4 c* k: W9 S' Z: L
<VirtualHost www.baygroup.org> #此处建议用IP; \4 q4 U; Y' C; s! K7 Z& E
ServerAdmin webmaster@mail.baygroup.org% d) r2 u7 [: ^- y1 B2 }
DocumentRoot /groups/baygroup/www
v! `) W( w$ w3 ^+ [$ GServerName www.baygroup.org #建议此处用域名
9 S: }& c! M# Y8 G3 x5 UErrorLog /groups/baygroup/logs/error_log
[) d t* f7 K" [TransferLog /groups/baygroup/logs/access_log
. [$ g1 O q, T& [+ N</VirtualHost>
) R1 S' k l( u6 N
& _$ W5 u9 p$ W/ b. F9 d* L+ b) Z同时要做虚拟网口或网卡的配置,在DNS也要做相应设置。
0 V1 v9 s) L7 `3 {$ j3 c' W9 C6 x+ ^' o) s7 [; B
二 、名字型虚拟主机(Apache1.3以上版本支持). q9 k: Y% r: b2 ^# I
8 t1 L! Z, I# X: T0 j# f6 | IP型虚拟主机虽好,但不是最佳方案。它要求每一虚拟主机有一专用IP,在某些机器上难于实现。& \1 y# X2 B4 y: i0 i1 M
2 Y8 \! c, C( {1 a6 m1 h2 \) }名字型虚拟主机是指每一虚拟主机的名字不相同,但IP一样。它的好处是不限制虚拟主机数量,配置、使用简单,不需另外的软硬件。缺点是客户端必须支持该部分协议,最近版本的浏览器都支持,某些老版本浏览器不支持。但Apache为此提供了解决方法。$ q2 x, }" _) G/ x
" l, U* ?( G2 f* x; ?* m+ b
设置方法:! j5 N2 F% ^' p, z
: m. v; H9 ^) p( j6 h
在配置文件httpd.conf里,用NameVirtualHost指令设置虚拟主机,如:
; R9 z$ U# ~6 o+ d7 C% m6 c) S/ f6 q' a
NameVirtualHost 111.22.33.443 Y5 S+ J1 Y; c
* C J0 W. g3 \) C<VirtualHost 111.22.33.44> #建议此处用IP$ O, b8 ?+ R M. w3 @( P
ServerName www.domain.tld #建议此处用域名, ^- }* ?" ~: C( f0 ^" d
DocumentRoot /web/domain
# S, Y0 S6 Z" }4 s# Y. }1 m</VirtualHost>
( t. ?, _0 T) t# T3 i# \1 p+ ]7 O$ G* ]7 `9 m' p% c" x
同时,在DNS定义www.domain.tld指向111.22.33.44。
9 z6 ], d& D% x
- Z% a9 O( J/ I$ o8 }; ]6 Z注意:当在NameVirtualHost指令后使用IP时,任何使用IP的URL请求都是针对虚拟主机的,主服务器从不会响应一个使用IP的URL请求。9 k' Y( r1 C% y
4 R4 N7 A: T, T. L8 S另外,有些服务器希望以多个名字被访问。例如,假设有某一IP的服务器,希望以名domain.tld、www2.domain.tld都能被访问,做法是在VirtualHost指令部分使用ServerAlias指令。如:
0 e1 X8 c$ K& R& X7 |! z
( n6 Z9 {$ c R" J% dServerAlias domain.tld *.domain.tld7 v' @: x& g" w) \% H9 N4 y* c
; h1 q$ S$ T0 g r9 @" c8 ~4 Q" a) P7 B
另附一些虚拟主机的设置实例。 6 K: R7 b/ H: w" _
- r9 d$ O% B, e$ p8 m: q n* {
: Z" s3 H6 l9 u+ b
7 g- F7 B, s7 d Q; P- N' ?
' O. x5 ^4 ]9 h, u9 R6 Z8 D* Q4 I2 p2 T* ] n, l4 X
附:虚拟主机设置实例
; v( x3 B2 d* r
0 k# f' u, d5 W7 qIP型的虚拟主机配置$ e# S k; H# e, Y
) M1 D8 ?2 h* X( jSetup 1: 服务器有两个IP,
% Z4 k; r7 c7 K" Y: ~6 _8 z% _: L: G! |
111.22.33.44 server.domain.tld
4 L* R. F+ y# l+ O3 }. p: m
5 k4 O* z5 a6 Q111.22.33.55 www.otherdomain.tld
# I3 j e0 S/ j% x0 ^: x
8 a$ E7 w- Y& b/ C, D0 [; V" o9 Y+ ~www.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。( R' m6 z" P, C2 o
& N; J( M9 }9 ~$ A y服务器配置:% w3 [8 I; v, ]6 O: w+ {1 ~# n; {
; w8 C3 e j/ b& ^' \
...
; c. A: J6 ]. l) c6 X0 a4 `8 \$ a3 K5 o7 L" X4 _4 N
Port 80
$ x1 x0 X* r3 s% S+ P6 t8 E5 S1 N8 D1 A+ [" W! ^
DocumentRoot /www/domain
/ k9 q; Z |% X W5 EServerName www.domain.tld
/ F9 H' A, c: x+ M, u- p<VirtualHost 111.22.33.55>
; E# }* {4 L3 d* M9 R' v" R" [DocumentRoot /www/otherdomain
2 }+ F% V! f$ @/ B$ X4 i4 SServerName www.otherdomain.tld
% K5 _4 K c+ G- x6 ?( ]% O.... e( _8 M9 X7 D" k' ?
</VirtualHost>- X8 O4 p, O& A# i& i
& f8 W i ]) \$ n' g% M: S& b
Setup 2: 基本同Setup1,但不设置专门的主服务器。
5 l- [/ l! R$ u% O" e* [ o i% B9 A# _0 [+ S
服务器配置:
% A8 l# S. [3 m* @7 @& A. b+ [8 v i4 `# T
...
" }: G7 d% E! N* `' O! O+ Z5 n, L9 E: ?6 u: N0 p* ~
Port 80
u8 Y: W- ]) t( ]7 R' S# Y! e& r* T7 c% C9 q* ~1 T
ServerName server.domain.tld! U& m' N @) P4 c/ m5 k* F
<VirtualHost 111.22.33.44>
5 L4 E6 S. O. ^( d2 b0 j$ y* qDocumentRoot /www/domain! }1 Y) q8 Z7 R) V
ServerName www.domain.tld2 i; b* F# e0 `
... @) ^/ C) u: e) C
</VirtualHost>
/ E. L; e8 n9 K c6 j" A6 T3 e* I( v. h
<VirtualHost 111.22.33.55>% j4 O0 o, ?' z( m# r8 n0 Q. o
DocumentRoot /www/otherdomain# C% S [; u w+ K2 s$ n: N
ServerName www.otherdomain.tld g. S0 m8 ?( c: R6 j
...
& M9 p3 I0 n4 l0 o9 e3 `</VirtualHost>! w+ m( E! \7 `
- h6 A% z/ I' U) H2 G
这种设置只有当URL为http://server.domain.tld时才击中主服务器 4 w+ E) [: m1 t9 n! b& _
0 b. p8 {4 b+ ISetup 3: 服务器有两个IP,
: A+ o/ A1 U% i+ E3 N: q6 {: z/ o4 b; L- F; j& y: q" Q/ ~2 @
111.22.33.44 server.domain.tld. i4 H8 S9 r1 q2 j" I* g o5 J
111.22.33.55 www-cache.domain.tld
; K6 n+ M% G& R1 z! i7 W5 A+ D; E. Ywww.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。% w W" ]: f4 \, l
www-cache.domain.tld是proxy-cache,端口是8080,Web服务器使用默认的80。
- h* Q/ l6 ]4 O% y- ~0 L: z
1 i5 ]1 U5 z: a2 Q. j. i2 B服务器配置: ! a! {6 a& r) C/ ~
$ a8 Q- q+ T% Z...
+ Y4 m- b, w4 R5 R2 ?, q( q' A' K1 ^4 L
Port 80% i; `! r% T* Y4 L' c8 _) Z) B
! z' W" }$ L, o; ?3 \
Listen 111.22.33.44:80" r; ]$ d& G/ N* v% w& \
Listen 111.22.33.55:8080# \0 @1 D# T- O
5 F. w+ ~7 O/ k$ _* _* P$ w
ServerName server.domain.tld- S x: t! H/ F1 R. Q
<VirtualHost 111.22.33.44:80>
/ E0 Z( }0 \. k7 jDocumentRoot /www/domain
5 g6 S) a3 `1 nServerName www.domain.tld0 M k: k) D9 N5 [4 L; e2 n
...% p* y1 B9 P/ P9 Z9 r' e/ u! P0 Z
</VirtualHost> [: i2 \, k" O" `5 p# U- [4 x3 U
& ~1 x8 ~# K# ?1 f; @" ] ]% H
<VirtualHost 111.22.33.55:8080>
p3 t- K: C3 ?- C8 GServerName www-cache.domain.tld
5 }; r& i9 g, Y9 o, y y& X...& I% \/ A6 }/ W7 I; w5 }( w
<Directory proxy:>
0 j7 p! K/ v) j/ _0 {order deny,allow+ p; Q! q# S ^4 J) \
deny from all m% y! j6 @+ H) }+ C. [2 U, w
allow from 111.22.33+ ~; F9 h' S6 c
</Directory>2 z$ w' ` r k/ n0 L1 c
</VirtualHost>
% w7 u# ^ x: |% K% r0 R$ }5 e7 ?* Q( ^& k& u# [7 o/ K* U( R
# f! b* f4 m4 I3 q* y
) t. o1 o4 ^0 R. A% S: L名字型虚拟主机配置1 l1 t; G, j3 c* W* p# z
M3 }' `6 c2 B, W* e6 c! m& ^/ L4 \- u
Setup 1: 服务器有一个IP,
' W: q8 q. J+ c8 d+ a8 M# u# u- F, X/ N- I& s) P1 e
111.22.33.44 server.domain.tld. 6 [; E4 w' `0 i0 O
7 o& }! V1 |8 ^6 V3 ?www.domain.tld和www.sub.domain.tld是别名(CNAMEs) 。
# d) T2 Z" [( b/ d" p& s
$ Y. b! i; h" r; I: t6 E v服务器配置:
' P/ w* i9 i9 l- y6 f- i1 q; M0 `; J8 ^9 z2 Y6 D4 Y& ^
...
1 g1 [; K% I" U" n' U* `4 w
8 X: a' V3 q+ G1 t4 cPort 80
2 u- v; c6 e4 X$ d+ T4 S c
5 C9 E6 ~' e* kServerName server.domain.tld
! Q- c T ]8 D1 o6 m. t$ tNameVirtualHost 111.22.33.44
0 `4 I: h. X6 p4 l
, [! u' C! q& q<VirtualHost 111.22.33.44>1 o2 ]/ R) Q8 N4 @- l
DocumentRoot /www/domain7 \, K, G' @4 V6 }
ServerName www.domain.tld$ C. @0 i! l% p& M
...+ ~) H# ]! w1 d! O6 T+ N) _; V
</VirtualHost>
- c- F; F7 o& s
7 f4 H1 W4 q" @<VirtualHost 111.22.33.44>- l4 ]% o$ v, s& x' }
DocumentRoot /www/subdomain
8 n7 W# G! \1 X9 G9 j0 j6 [ServerName www.sub.domain.tld
" q% X, @4 H+ z- }( D# Z) Z.... ~# E2 I* S2 x
</VirtualHost>
: F8 y3 Y! ]1 J3 ]) j) B5 R' ? ]: K4 d& `* o. r( J
若使用IP访问服务器,由于 www.domain.tld 有最高优先级,被认为是默认服务器或第一服务器。
V4 e- k" ?" _; U7 }5 b9 o; k4 R* G8 K/ I
Setup 2:服务器有两个IP,: l# ^7 ~. _/ ]5 I9 K% G
5 u2 v# s# V8 j111.22.33.44 server1.domain.tld 用于主服务器
& b' {2 Y$ g8 h4 d111.22.33.55 server2.domain.tld 用于虚拟主机
) \" |7 H& a. I别名www.domain.tld用于主服务器,
/ `4 s! W/ r" n' j" d别名www.otherdomain.tld用于一个虚拟主机,
) r, r+ m% d( ?: _9 l" L别名www.sub.domain.tld,*.sub.domain.tld 用于另一虚拟主机,
, A- b, C2 C; I6 i0 N! m
. x% K" M5 J% R% y2 T3 Q. A服务器配置:
% _* L: v$ X" \# p/ H J9 p! D" }9 b8 z
...# M" ~3 R3 e$ C# t9 C+ J( l9 }, f
9 W7 t, h! d1 y, A* e# \Port 809 j { m3 k2 D! E
+ S" h% {2 V* r$ QServerName www.domain.tld. G! }2 N( f, v6 m
DocumentRoot /www/domain
6 p, ^9 `, k7 R' C' D- L1 m$ V4 ~NameVirtualHost 111.22.33.55
7 k% O0 @, t4 N5 m) D+ a<VirtualHost 111.22.33.55>
# t# q! w4 g$ ^; [& _5 ~DocumentRoot /www/otherdomain) D% W* q- g9 f/ U/ n1 r2 _
ServerName www.otherdomain.tld
0 \6 y1 \- b4 @. F...
4 N6 W5 m/ d' F1 G4 a9 L+ U" I</VirtualHost>
# D/ F8 \* L1 l2 z0 S, |5 U, X( ~/ I7 i, f
<VirtualHost 111.22.33.55>' ?2 ~" r+ `0 R! ?
DocumentRoot /www/subdomain
- M$ v" M( W# |7 J. X! r2 u0 N1 @ServerName www.sub.domain.tld5 o( Q. k) Y8 Z4 T" C- ?
ServerAlias *.sub.domain.tld7 O0 m# n4 U: y! k: `- X5 J
...- E$ q, R# R" g" k& y$ G% u0 S! H
</VirtualHost> , K+ h, T3 p& X
$ q1 @' U/ p6 _: r; z混合型(IP/名字)虚拟主机配置
7 n) Z3 Z& A- P o
" l( F" [8 i- k# YSetup:服务器有三个IP,% V; N- s3 n& c
5 C% T9 q- V9 W111.22.33.44 server.domain.tld 用于名字型虚拟主机
( Z6 P7 z- q. a" g G2 _( f111.22.33.55 www.otherdomain1.tld 用于IP型虚拟主机& ^& w" B1 x' ?" O' T) X9 }; V
111.22.33.66 www.otherdomain2.tld 用于IP型虚拟主机
& W& ?. M( B( J5 {$ B! y
& p5 n& h% N+ h( E2 M) e$ |' o% \服务器配置:
( q( C7 a, {: \! A0 f$ m...
1 l4 D* S! y9 c" o. _+ q7 r6 W2 \' M' y4 O( M2 u$ G8 D
Port 80
9 O" E& P0 `' C% O1 R: C @ServerName server.domain.tld
2 w% i" n$ F; g! y( o/ R w. g+ B7 N+ {- h# N C
NameVirtualHost 111.22.33.44
; D5 I8 J; r& |1 D5 X( ?, S C; |. \* I9 x
<VirtualHost 111.22.33.44>
' M. b( R7 t2 V! f* K2 e0 {, x5 r1 IDocumentRoot /www/domain
( J8 M/ g1 _) u4 g! |( g+ BServerName www.domain.tld4 l8 Z# {8 e7 ?! i$ J0 ?+ J3 F
...
" y! ]$ n7 {% e0 `+ l+ b/ i) B8 B</VirtualHost>4 P/ K9 p! `7 S
4 N3 G6 W/ m! A7 i, U<VirtualHost 111.22.33.44>$ o5 x/ f; G& C6 t* A5 v& i2 w
DocumentRoot /www/subdomain1
. H- i N/ b" E* Y) L; _; bServerName www.sub1.domain.tld
) k& y+ {* _3 y- M...
- \' U; M2 W& g/ B Q</VirtualHost>
1 o0 Y' {% o% F# t5 A: |, ]6 {0 A6 A
<VirtualHost 111.22.33.44>
! u: O6 K. h2 EDocumentRoot /www/subdomain2
/ ^$ y: s5 N& P+ AServerName www.sub2.domain.tld
" J4 i2 W7 r: Q+ s...
" t: ^8 k2 W' U: t. u$ a+ ?3 p</VirtualHost> ! M1 G8 S; r' g2 w3 E
/ u, H7 U& q. G
<VirtualHost 111.22.33.55>
' o8 _4 H P8 a- {DocumentRoot /www/otherdomain1
! k4 c% k6 N8 tServerName www.otherdomain1.tld
5 W7 w4 N% V4 p...3 r+ z9 \7 F3 S4 R3 I5 q
</VirtualHost> 3 o- x4 k& ~) i+ [- _' c
' e- b; I! \, |5 L
<VirtualHost 111.22.33.66>( Q1 Y' w4 }3 H! |: @
DocumentRoot /www/otherdomain2
9 [9 x3 b# ?9 K C& Z3 x, X9 {* NServerName www.otherdomain2.tld
! L; o* \& s, T! n9 b, i...
7 S& _( S7 I& u2 B0 C</VirtualHost>
) f7 } [& w4 M/ K8 |2 h% |+ \. {/ Q- q6 N- q& v9 l0 E1 ?
端口型虚拟主机配置
3 |! v! D2 e2 {6 i
! Y% S. E% h' E: N$ j' n+ ]Setup: 服务器有一个IP,
7 l# b8 ~4 W& j j; Q) q/ a; s
]! i# n- Q8 E0 N& G, Q V111.22.33.44 www.domain.tld
( \3 @! K9 i. M: H6 _
4 P8 L9 a& D5 c: d6 R2 X1 v不需要另外的别名或IP,采用端口型虚拟主机即可设置一个配置有别于主服务器的虚拟主机。
1 \) d3 M0 W. s
; p5 ?( M- p8 @$ c1 E7 n, o" J) Z服务器配置:
+ i0 @6 I+ V: g...9 |3 z# S* [; K# r
/ t9 z" `% g0 X- U: j/ YListen 802 ? N3 S a/ z9 I, n; M1 Z
Listen 8080
/ r+ v) k4 A' _" N
9 _" \# f( m7 Z9 i1 b, ]ServerName www.domain.tld5 d' E4 w) F4 ^: B5 e% j
DocumentRoot /www/domain
9 }" A# D) ^0 E4 ~& [: y7 f) ~6 ]# t& P& T& p7 f* g$ @
<VirtualHost 111.22.33.44:8080>
% J% \* c) k3 vDocumentRoot /www/domain2) Q7 e) x' ~0 E Y2 D( W
...
5 ]8 R' R# V. a% R( B, M$ Z</VirtualHost>
6 d" P1 g# d" i$ }" K" B0 {0 f
s* b, b8 p; }+ ]5 H ' j2 {% D! u3 Q% |+ `8 @$ r5 t
, G8 d) n5 M. n& m0 F+ @+ o
来源:http://fengyu.china.com/Vhost.htm |
|