|
|
unix 平台与NT平台使用apache server的设置相同。以下重点以unix平台为例# d( G' `( }) g$ {
说明apache server的设置。另外值得注意的是,虚拟web的成功设置,有大约
8 m" e- @( o. z5 x50%的工作量是在域名的注册与解析方面。所以一般先注册好域名然后再做2 g% K+ B8 c3 |+ w6 b8 n0 q
虚拟WEB设置。
9 P" Y0 |) k b6 D# T2 `. r1 j+ {- C5 g( h
一 、IP型虚拟主机
5 [2 s( C! q+ F! J* w, d$ y7 G
; j9 K/ m/ y% X- ?( C f+ e0 B# GIP型虚拟主机指每一虚拟主机对应唯一的IP。可通过多个物理网卡或虚拟网口实现多IP,Solaris2.5和Windows NT都支持这种方式。3 ^9 k+ W* v; l
2 W7 E: y+ d0 g9 }: | o- X! a* D
两种配置多虚拟主机的方法:' c( Q9 S1 j4 p& R
* y+ e/ c, e9 K
1、为每一虚拟主机启动一个httpd进程。9 E) z j/ h/ H: N. v/ _
9 W( M! c- p$ _ f7 p1 Y& K& z! w3 d下列情况下使用此方法:
9 e: b; e7 i7 w2 v3 v) @ `. B0 s% T4 a9 \( Z$ ~' c
? 需考虑安全隔离问题,如两个httpd运行于不同的User、Group、Listen、ServerRoot,两者用户除通过Web相互浏览数据,无法访问其他数据。& J& r9 v; r# ]: z+ h& z
L) V& [( V" p6 S) w8 s% n6 f! p
? 能提供足够内存和文件描述器。
, c1 x2 x& H5 ?/ f/ c! ?; V6 Y% ~6 M6 y* S/ g/ k; A
设置方法:3 B4 d% |' u% Q1 V! j
0 O% A H3 x4 E
为每一虚拟主机建立一个独立的httpd安装,在每一个安装路径的配置文件httpd.conf里,用Listen指令指定进程服务的IP,如:& G3 l" R3 B( V9 |' A# ^% ?
3 z; o- T2 @! d% P x& Y
Listen 10.68.37.10:80
& h9 ^8 v% G9 j- k6 f/ r+ F/ k- K( I3 E0 x. l8 Z: T# K* i# x4 c
2、为所有虚拟主机启动一个httpd进程。
, u; B6 A$ M$ W! K# V* K: j
* q( ?; @5 ?% D& h6 T下列情况下使用此方法:
" t4 i) d4 f* T* ^& t2 {- R2 C" D5 E9 {2 Z+ B" F+ `, l4 ~
? 允许在虚拟主机间共享httpd配置。
! {: v! Y7 C$ I" w7 B4 i: k( P% N: K6 L3 s+ R$ v* ^: D# E
? 计算机服务于大量的请求,运行多个进程使服务器性能降低成为重要考虑因素。" {+ w4 q8 d$ \7 p# W, f
: z4 D1 c0 w% a+ @
设置方法:
5 k, y; E) ^/ T7 O2 o0 x1 }# \. [4 c; D* t/ s. Z
在配置文件httpd.conf里,用VirtualHost指令为每一虚拟主机设置ServerAdmin、ServerName、DocumentRoot、 ErrorLog、TransferLog或CustomLog,如:
0 o( E7 r& G7 Y
/ S; C1 C6 W% @+ F" p+ b! P& {<VirtualHost www.smallco.com> #此处建议用IP
6 A1 O6 ?* w! \ServerAdmin webmaster@mail.smallco.com" m. N, g9 G3 p ^7 D, t4 ]
DocumentRoot /usr/local/etc/httpd/htdocs/smallco: Y( t: w; `, ?
ServerName www.smallco.com #建议此处用域名
7 O8 @+ R! ^/ \3 y! `: oErrorLog /usr/local/etc/httpd/logs/smallco/error_log
4 a/ P: ]) b0 p4 R6 e) [6 I# V8 dTransferLog /usr/local/etc/httpd/logs/smallco/access_log& s. H8 s; t" T; |9 m% K8 {
</VirtualHost>
! M; s/ G/ ]: X- ?
; ~2 q/ ?2 D7 j<VirtualHost www.baygroup.org> #此处建议用IP! N3 F* D3 H6 I6 A
ServerAdmin webmaster@mail.baygroup.org
! s# U; x5 N) _DocumentRoot /groups/baygroup/www* _0 d6 a: B0 O
ServerName www.baygroup.org #建议此处用域名' b$ K/ }( [" \3 q8 D4 D; W# i
ErrorLog /groups/baygroup/logs/error_log+ s: G! a; |" J. q4 \
TransferLog /groups/baygroup/logs/access_log
- d* v6 e" |( F. k1 v9 i1 F</VirtualHost> % O( ]' Z% J' [
1 h# ` t/ P6 e% h2 i5 O
同时要做虚拟网口或网卡的配置,在DNS也要做相应设置。" j I# Q9 H8 z: ]/ q
8 X+ r2 c0 y" h) B4 z! U6 J% B8 C
二 、名字型虚拟主机(Apache1.3以上版本支持)1 Y0 g9 `" o b7 W5 l9 c, l
3 i" | m$ `$ u- j9 \9 t. H
IP型虚拟主机虽好,但不是最佳方案。它要求每一虚拟主机有一专用IP,在某些机器上难于实现。6 i* W# }2 L0 ^3 Z" F
2 t+ F0 h3 z4 j! C7 f4 V
名字型虚拟主机是指每一虚拟主机的名字不相同,但IP一样。它的好处是不限制虚拟主机数量,配置、使用简单,不需另外的软硬件。缺点是客户端必须支持该部分协议,最近版本的浏览器都支持,某些老版本浏览器不支持。但Apache为此提供了解决方法。+ I5 _, ]4 ?0 r: h/ E
% t( b' ^" Q9 A设置方法:
' `7 f5 M1 ?3 I& ~: p
; `9 ~' G1 }% @+ f在配置文件httpd.conf里,用NameVirtualHost指令设置虚拟主机,如:
7 N4 C. I5 H) s3 ?% k+ u4 `+ |5 }2 N' m: N; q
NameVirtualHost 111.22.33.44+ L7 `8 k3 L1 m# V4 J6 S. j" C6 j& z
3 G% h# y) {1 g- z<VirtualHost 111.22.33.44> #建议此处用IP
. W* W( u: h. X( ]ServerName www.domain.tld #建议此处用域名
- k' \4 @, f8 _- T6 pDocumentRoot /web/domain( H7 h( J% D( Y. O1 B1 Q. b( C
</VirtualHost>$ l6 L1 q. ? {, _" Y6 V
$ c7 t8 I0 O o同时,在DNS定义www.domain.tld指向111.22.33.44。4 _1 P ^: H1 I3 Y
2 N5 N) f, L3 S8 o! e+ ?
注意:当在NameVirtualHost指令后使用IP时,任何使用IP的URL请求都是针对虚拟主机的,主服务器从不会响应一个使用IP的URL请求。/ y6 P' d1 I1 K) ? f
, \: x: f. h( S3 b! P
另外,有些服务器希望以多个名字被访问。例如,假设有某一IP的服务器,希望以名domain.tld、www2.domain.tld都能被访问,做法是在VirtualHost指令部分使用ServerAlias指令。如:
$ X% H* F& v- W8 ~9 K6 s/ }& h9 W) k4 V0 R- q
ServerAlias domain.tld *.domain.tld+ m% \, B7 D- y1 [' f1 G L
9 y! x6 y4 n' M另附一些虚拟主机的设置实例。 ) E1 I% u# i/ V h( X1 z
0 l1 }( r/ g. [# q; G! a 1 H4 `6 N: D; P& ]' R+ M6 p1 q
* ?) v6 F1 I. e* m. Y' h) y# P
+ Y' n. k( p" B
* k1 L* H( ]: d
附:虚拟主机设置实例! d( g: T: W* q! z4 d
: p! n5 a! E' h9 A1 J3 n4 A# `
IP型的虚拟主机配置 G5 i2 I( X8 c0 Y
: O8 ^, |$ I; k4 |2 X7 P- z1 Z
Setup 1: 服务器有两个IP,) W C- ]5 j& e/ I/ \' \
0 J- |- k: g3 W* [0 B
111.22.33.44 server.domain.tld# x. e* \+ R% L" B% n- f
3 B7 |9 L( B1 Q% y111.22.33.55 www.otherdomain.tld: K8 g1 a1 `: Z- r- F+ o7 b
_! V/ v. S3 l- A
www.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。! I- |7 a/ @* B( |9 t
3 v0 v( _ |# e& x服务器配置:
9 G/ Y" t# G5 ^% ?( z6 [& K" P3 v$ i5 p5 j/ U+ L7 A
...
( d% }, k* K3 Q$ L/ g/ V4 Q Y/ Y, f' l% U
Port 80
8 p4 e8 J( |$ w0 ^2 p: s
* | v" z2 T$ rDocumentRoot /www/domain
8 O# w7 [% ?8 S& n; R5 P7 g. q7 [. AServerName www.domain.tld3 q; z8 y* W8 A6 T
<VirtualHost 111.22.33.55>
K. w2 T% j0 | S: d6 DDocumentRoot /www/otherdomain$ g: q; O7 x' _4 }4 R
ServerName www.otherdomain.tld
$ ~7 u( a1 _8 o. e...
. C, Z6 s T* i- e5 X) z</VirtualHost>
+ P+ L0 w- h: a3 W- v, m, ?. _" {8 [2 v+ L, l- G. Z2 Q) F
Setup 2: 基本同Setup1,但不设置专门的主服务器。
e! S. \& x) j6 S. w. ~- p
) n8 I0 j. V* Z) V7 J服务器配置:- w4 q, l7 K v
7 c: \, s- g2 y: r; y, m& z...! m) Q8 b% A0 ~! \
) n; }1 b' I1 M2 Q
Port 80
: o% D- S- C( j! x1 P5 E& ]2 G6 E: y$ s( O# {
ServerName server.domain.tld
, n6 V& c; G% L<VirtualHost 111.22.33.44>
5 f) `& [& X: J8 c- yDocumentRoot /www/domain
( L4 U4 R6 q: b! e3 r& FServerName www.domain.tld9 F, T* z' g, j/ v- E4 W
...
0 q' ~" w1 q/ K) {' \0 w</VirtualHost>
# q$ M" w2 d! r0 M3 y5 n$ t+ K+ o5 F. H
<VirtualHost 111.22.33.55>
6 B: j4 [1 X2 ^% `& ODocumentRoot /www/otherdomain1 f- t$ a% f% `$ r- i% f
ServerName www.otherdomain.tld
g. c/ \+ u$ N q.../ y9 C% u7 R0 |0 u o# ~" b
</VirtualHost>, q8 ]' f5 {0 S# ?) {9 B
7 b9 [- `; P3 X这种设置只有当URL为http://server.domain.tld时才击中主服务器
3 e1 \6 ~$ l! a( R/ @# _9 z* Y# ~' L$ {; [0 N
Setup 3: 服务器有两个IP,& K' I, y! _$ D4 c
) q; S8 W4 w( _4 Q& g) E h4 H
111.22.33.44 server.domain.tld, c, h- P) S- Q3 H7 M8 l
111.22.33.55 www-cache.domain.tld
% `1 P5 G9 `" a; I( i1 Cwww.domain.tld 是server.domain.tld 的别名(CNAME),代表主服务器。: Y( z( [* L. C; ^* e1 P* c
www-cache.domain.tld是proxy-cache,端口是8080,Web服务器使用默认的80。
* T3 v! C1 K/ `( |6 M! o
6 R/ a; m7 m0 o服务器配置:
/ N6 Z. M' ^( n" S; t* T# l* a" U/ `5 M1 ?: E: n. ?* W. w
...5 H/ j, j0 ^8 N2 I. F
$ `4 O3 i) Y" d' }% c5 w8 ePort 80* s. [* f! {$ N
[2 A! K1 L c
Listen 111.22.33.44:80
) ^. i3 \2 k5 L# aListen 111.22.33.55:8080: C* D; ^3 p5 Z. @* f; P/ q/ ^8 k8 @3 @
$ U( T0 E* ?- Y: y/ w
ServerName server.domain.tld
* T* p" z `, W" w% F& v4 K, u<VirtualHost 111.22.33.44:80>
1 V% n5 f$ d1 \3 KDocumentRoot /www/domain
& A Z: e# W4 \# m+ `ServerName www.domain.tld2 W/ p3 f* D' [3 C
...
2 W% P/ U& t& E% f5 Y</VirtualHost>0 Y! L8 C; q/ Z" K
: R$ u0 V8 r0 S$ _' ]# ?
<VirtualHost 111.22.33.55:8080>
" _) I6 i/ t8 T4 x% R9 C7 XServerName www-cache.domain.tld
3 p9 [: d" f M" B0 d...1 S8 N$ o4 S8 h7 f6 ~" i7 b) {5 S4 R
<Directory proxy:>
+ b" y" ^; P2 S) O: x8 worder deny,allow
( c" C8 b) {: U, ^9 J& Cdeny from all) F$ i* I5 G+ L- A9 H' j
allow from 111.22.33
. V( @/ M4 Z a1 V</Directory>
/ {0 ~0 `. c5 V</VirtualHost>2 a0 @) C: P+ p+ y& Z0 h& R+ D
; @$ t! b& v% V; e, h U W3 r ! y, q% E, C, L% z) \8 g, J: ?
^- r+ m# C# A7 ^名字型虚拟主机配置
3 s$ n$ l- Z# n0 l* | t4 G1 e' |0 [# }4 U& R5 l3 G c
Setup 1: 服务器有一个IP,
1 ?. n( I7 n" ^- f0 Q
! t7 G( k: r+ [1 \111.22.33.44 server.domain.tld. - j7 j, }0 d9 v- I2 V% B
8 _, Q6 B, E# p1 W) o1 R1 l) Q& Swww.domain.tld和www.sub.domain.tld是别名(CNAMEs) 。 ) A; J# O2 {2 B8 }# |, B% W9 Q
) z9 S; J/ B$ C$ a9 P
服务器配置:
) _' N: l1 ^( p6 u' v2 l& G( |# K, w! f- P
...
( j+ b% U% ~: x, J0 }( c4 I+ S3 \5 u, n+ }7 j$ t
Port 80
& N" l! V9 v5 X* M& u1 ~7 i+ N! U
+ `# R- R, b1 k! C+ @ServerName server.domain.tld. H% [; e3 S3 x6 y2 R: n; M
NameVirtualHost 111.22.33.44
; P* {' v$ t+ `, w3 l+ b4 L0 K1 `6 u4 W4 ], U
<VirtualHost 111.22.33.44>
' r9 E+ r, N$ \0 V6 E! t4 {DocumentRoot /www/domain, H/ e/ E- t( Z0 Y5 L" m1 m8 p* x
ServerName www.domain.tld# x" U- |' y. C$ R$ i5 O
...
' h0 f1 Q- f& e7 O- u) J1 K* \</VirtualHost>3 w( s* n. a. |- T x2 U; }
+ L6 V# E. q( F9 |" r<VirtualHost 111.22.33.44>
& b; t4 G5 f( zDocumentRoot /www/subdomain9 x$ S Y% S9 J# `: F8 \7 H a$ ~
ServerName www.sub.domain.tld
- I& L- F# `$ x3 f9 u: @$ `* _...
/ P) B H4 v# z/ x: ~& a</VirtualHost>
/ O0 g7 D' Q( h; H5 M
, b) J5 D y+ U- Q" ~! J0 N) E0 u7 U若使用IP访问服务器,由于 www.domain.tld 有最高优先级,被认为是默认服务器或第一服务器。
6 B: |" b$ X0 v; C- U' z/ A2 l6 `1 F, O+ W( W: ^. ~
Setup 2:服务器有两个IP,
, _9 ^8 d, c' A) X: \% g: k+ H4 @. I" V' s
111.22.33.44 server1.domain.tld 用于主服务器* w; z) }) V' Y7 ~
111.22.33.55 server2.domain.tld 用于虚拟主机
! {, K, _: @) f别名www.domain.tld用于主服务器,
% l+ I* V; V& {7 I别名www.otherdomain.tld用于一个虚拟主机,
+ a( S5 T( ?5 I: {. H& s别名www.sub.domain.tld,*.sub.domain.tld 用于另一虚拟主机,
0 r% [* e8 J! \. m& A$ ]0 ~& z
: v* M* G( a) R服务器配置: ; Z: n* i- j. K# D6 e6 F0 d
$ L4 X4 g7 f7 u; A0 T, S...
8 `3 }9 i( u5 ~8 T. K7 `0 @3 r; J; N% C0 `2 [
Port 808 r, H$ s4 x8 C6 j4 F; `# a
8 m& K; ]$ \7 \ m5 ]* ^" H1 E6 C
ServerName www.domain.tld
N$ R0 l6 q$ }8 G( fDocumentRoot /www/domain" n h+ W3 ~* A$ W9 r" v$ t
NameVirtualHost 111.22.33.55
/ p- i/ V1 V/ Q, V$ S<VirtualHost 111.22.33.55>% u" } G- e$ R. f; r4 T
DocumentRoot /www/otherdomain
, Z' f: G1 A: w8 o, bServerName www.otherdomain.tld, A# R* k& i! S M
...! y1 n' C! L+ N h( {
</VirtualHost>
# Q, ], S1 o! J% i9 _" [+ M
$ T, i# [& D- X3 ~0 s6 `7 S<VirtualHost 111.22.33.55>2 X8 ?1 ?- q' Z( P' j; m, k/ I, N* ~8 S
DocumentRoot /www/subdomain6 e0 A/ A# P- t9 ]* C
ServerName www.sub.domain.tld
" R1 p: ?! O4 q5 U( I( s/ Y5 h* Y# |ServerAlias *.sub.domain.tld# M4 F6 H* [$ p( Z, ~& r* y; q
...
0 u: a9 L& ~/ w2 W2 [- J</VirtualHost>
/ u' K1 q3 W( n% `
+ ~6 z# x" b9 o2 p# `/ K. _混合型(IP/名字)虚拟主机配置2 J ~ {+ ^) _( D& `9 U' d+ a
2 x2 A+ [1 F0 ^5 Y3 ~Setup:服务器有三个IP,
; a+ E2 { U/ o! l) ?$ `' P% r7 A6 C4 }! k) [. D
111.22.33.44 server.domain.tld 用于名字型虚拟主机1 E6 p1 d$ V. m+ @
111.22.33.55 www.otherdomain1.tld 用于IP型虚拟主机! O z2 z; U( \4 Q
111.22.33.66 www.otherdomain2.tld 用于IP型虚拟主机3 @% c* o% E( s! Q! \8 U7 E- O
% l8 k. W7 Y1 O/ U( Q) W
服务器配置:
1 \1 n" d4 Y$ f8 R1 T...5 N/ Y7 c0 H/ {( ^. t9 q% k8 X
9 D# _3 {: W. R& D- }$ B
Port 80# S1 c( s9 J7 f& W: U- y
ServerName server.domain.tld
+ x; V, y5 H. R7 n/ N* V$ |5 {7 R
NameVirtualHost 111.22.33.445 t+ |+ u6 `) ~2 `0 w/ i
+ t$ Z) }. f1 L* @% ]( H<VirtualHost 111.22.33.44>
1 Q) v2 k* O! rDocumentRoot /www/domain
; H7 k2 l0 k/ r8 X# CServerName www.domain.tld: |# Q( P l: Z1 j5 p- H3 _5 I' d
...
4 b3 L$ n0 r4 L3 d( I W- X: ` Y5 W</VirtualHost>8 n* ~6 g& a1 u
* Y9 R3 ~ w. J# [<VirtualHost 111.22.33.44>
3 K" S A" a/ R( ~3 ~8 u4 Z6 wDocumentRoot /www/subdomain1
8 E8 x, n8 ^* Y9 j% c V. nServerName www.sub1.domain.tld
+ e5 R2 o$ G9 L' G: n8 Y...
" d' D( [6 A# U3 Z* n</VirtualHost> : ?( K) [; c, [! ^
: \" s: T$ T- |, Q Z<VirtualHost 111.22.33.44>
& V6 x* v. L4 ^9 s5 B, g, uDocumentRoot /www/subdomain2- q. |' F* S1 y% ?7 \+ ]& w
ServerName www.sub2.domain.tld
# m. @0 [4 F- p5 V...
, W# p% k& q" v2 h1 L</VirtualHost>
4 J) M$ E& B6 ?" C, l$ p" |+ @3 w8 ]; X
<VirtualHost 111.22.33.55>
' F4 ~7 t( O, ?& E' S0 NDocumentRoot /www/otherdomain1
, B) m" v; P8 a% S+ J- NServerName www.otherdomain1.tld! r; n5 T1 }* n$ l1 j
...
! a' k: ?* C! A9 N* ~/ v</VirtualHost>
6 } G' Z" I$ }. h2 {2 ~6 d6 V* c7 m, Z7 Z% o% M
<VirtualHost 111.22.33.66>/ E9 ?) e3 a: e' m; h5 B
DocumentRoot /www/otherdomain21 B. [6 u4 e! ~/ q* P& x
ServerName www.otherdomain2.tld; ?( ~. Y, q, E
...
7 j+ c. V0 `0 d% k7 R1 n</VirtualHost>
9 a" h3 x; G# d1 H6 H( \
: R2 ~1 q8 O" Z) J端口型虚拟主机配置
& Y# }2 I# y" v! v) B4 Q/ R7 t
0 J8 |1 w; |* r& k# ^Setup: 服务器有一个IP,
0 x* G S/ `3 c2 _
6 o+ X4 |8 _! C7 k111.22.33.44 www.domain.tld9 @ t% q0 S& P+ [5 e
3 Z. H9 c: f5 h9 F+ {6 E8 x0 {- e4 `8 X不需要另外的别名或IP,采用端口型虚拟主机即可设置一个配置有别于主服务器的虚拟主机。 : ^: S0 `- }2 p3 y6 u+ E# C1 x
- n( F3 D* U5 \服务器配置: $ X+ Y& }' y+ [
...2 w1 d- I) l+ |/ c
, ^- M3 m9 {6 ^/ q9 `4 p
Listen 80. \# L% F- |' M6 O6 k0 W
Listen 80805 D2 E z* S) w7 N) G. q4 V
- B9 j( { h* A/ H; rServerName www.domain.tld. t; \9 G. j" G- E3 _2 e3 o1 D0 K
DocumentRoot /www/domain& c; h6 e# {2 d8 K( m7 [3 u
; |+ ]$ o- `/ e" f( x! v/ q<VirtualHost 111.22.33.44:8080>
! |2 D2 G, ^. a, w$ K( W2 K4 YDocumentRoot /www/domain2
7 Q/ s) a4 w3 s...
: v& K) k; a) _4 A) A</VirtualHost>
5 |6 d2 ^4 v1 v5 U1 p; y- r- |" R; R5 Y& `) X
7 O$ T) j4 ~# l
. n1 u: B3 m4 V; w* [( i1 M9 ]
来源:http://fengyu.china.com/Vhost.htm |
|