|
|
apache禁止访问目录列表8 `* c6 H' T0 ^3 g! A: O
apache禁止访问目录列表对于开发人员来说还是蛮实用的,可以迅速查找根目录下的所有项目,但如果一个挂在互联网上的服务器为了提高安全性就必须禁止访问目录列表。6 f3 A/ X3 ]# X2 {8 d+ B
: o7 g& G# u: T& m 找到Apache 的 httpd.conf 配置文件将:% r/ r7 o* C" F7 m; H
0 G j8 p6 F- g' W
5 n2 p3 [% n' @9 s/ IXML/HTML代码
1 [3 {% T( v0 q% i8 n, aOptions Indexes FollowSymLinks 改为:Options FollowSymLinks 也就是把 Indexes 去掉。 ; E& u9 n8 X+ A1 ]; ]& k0 N8 Q
0 Z* G4 a q6 @! p额外信息:在apache中设置虚拟主机& y: t& L% f* M3 m0 S( P
* Q7 n, \0 p& K- U& F6 g 在IIS中我们可以方便的通过不同的IP或者端口再或者主机头来设置虚拟主机,在apache中也一样可以。6 s! f9 o' |4 N7 C6 z3 M/ ]
假设有www.123.com和www321.com两个域名,要同时指向一个服务器地址,通过这两个域名访问时,要呈现不同的内容,那就需要设置虚拟主机了。域名设置虚拟主机还需要DNS服务器的支持。. I4 s7 p0 I' B5 Z% s
6 M7 C+ f. X0 X5 g配置常识:
5 G# S! B( {3 A& [; V& K. ~& I' O! D1 W. g: E0 V
#Vi /etc/apache/httpd.conf #按你实际情况选择% _1 ]- |5 W. J
/ b2 b( C3 c! ^0 P0 h Q namevirtualhost * #设定虚拟主机ip默认任意1 g4 m" |6 U) A4 p3 L6 K
% N. i- Q; H* s# c6 t* B
#一个简单的例子3 t) e9 y4 O6 N+ ?8 j
< VirtualHost *> #设置一个虚拟主机 设置其ip默认任意/ F$ z+ T( T; D) g
ServerName www.123.com #设置用那个域名访问 9 f! F* G+ C2 X/ D: L7 J: _5 V2 ?
DocumentRoot /var/www/nckz.org #设置这个虚拟主机web存放的目录 # T8 w( Z# q1 i* p4 V- }" P8 g3 _
</VirtualHost>& G1 f5 F6 S4 D
* ?3 L) N" \$ _, m9 ?* w" q1 _#配置参数说明
9 i8 P R$ V7 U+ m' l<VirtualHost *> #设置一个虚拟主机 设置其ip默认任意
. A% \+ N3 w, [! y ServerAdmin webmaster@site1.com #设置管理员邮箱
" Z$ J: r) T$ G; F DocumentRoot "f:/kuaipan" #设置虚拟主机网站目录8 y* d9 P, `9 w* z9 \9 `
ServerName qqcm.net #设置主域名' l, a* I7 F9 S' H
ServerAlias fcc.net #设置别名
, X6 A7 p, a! v' r- i$ B1 I# a/ c ErrorLog "logs/site1-error.log" #设置错误日志路径
% Q3 @9 A3 r: D7 v1 l5 U! S- G( e CustomLog "logs/site1-access.log" combined #设置错误日志路径和方式5 J! r! b, L" _
9 D* M6 j8 }4 k* k" D<Directory f:/kuaipan> #网站目录权限相关针对本虚拟主机,请注意执行规则,不要的选项去掉
: g. r! x4 }& e6 {: j, N- M Options Indexes FollowSymLinks+ q% s+ V1 k( P1 m; _8 {. j
DirectoryIndex index.html index.php #设置默认索引文件(主页): \0 I$ S4 b- d% U
AllowOverride all #确定允许存在于.htaccess文件中的指令类型,默认全部, ~+ K- N: @* {" Z R
Order allow,deny #先检查允许设定,没有允许的全部禁止,allow,deny可对换! s1 n$ y" z' k
Deny from 10.0.0.1 #禁止10.0.0.1这个ip访问( F' ^2 q" M' L# t: ^: R
Allow from all #允许所有ip和域名访问% Z7 w0 C/ W1 D/ ?) r4 |: _/ j
</Directory>- u* o# X0 T' e+ X0 Y
5 a$ a j* j& d$ w s </VirtualHost>
, Q3 }; J$ ` @
* A( H' `1 Q/ C6 t! sapache禁止使用IP访问的实现方法, ]' `# ?4 m, F W" R
用apache搭建的WEB服务器,如何让网友只能通过设定的域名访问,而不能直接通过服务器的IP地址访问呢,有两个方法可以实现(仅限于我知道的,当然肯定还会有其他方法可以实现),都是修改httpd.conf文件来实现的,下面举例说明。 方法一:在httpd.conf文件最后面,加入以下代码
0 f, D: c2 o5 G$ K/ y' j9 \2 q! | NameVirtualHost 221.*.*.*
; m( y& D6 c) Z! t+ u- W <VirtualHost 221.*.*.*>
# b6 K) G8 f+ Q8 i9 X) b ServerName 221.*.*.*
! W9 s/ g0 N8 u ^ <Location />
( {7 K7 B! ?4 ] ^2 g# Y# |6 u Order Allow,Deny7 [" X% \# F* A7 B& D
Deny from all" N$ ?* p% b) m/ T6 F" t7 ?
</Location>$ C k$ s& s# P# t, q/ k
</VirtualHost>
, C ?+ n* A) c4 p7 q% F <VirtualHost 221.*.*.*>5 Z/ z' J' A7 b: ~6 _: Y* J
DocumentRoot "c:/web"# Z) T9 D+ e8 w G
ServerName www.webjx.com1 x8 b9 W4 @* @- h& d6 X
</VirtualHost>
% K L: ?4 c" x2 p' G 说明:蓝色部分是实现拒绝直接通过221.*.*.*这个IP的任何访问请求,这时如果你用221.*.*.*访问,会提示拒绝访问。红色部分就是允许通过www.webjx.com这个域名访问,主目录指向c:/web(这里假设你的网站的根目录是c:/web)7 a' M9 c2 ]- Y1 i# |2 l
方法二:在httpd.conf文件最后面,加入以下代码 M* L' S0 R2 ~% E; p* t
NameVirtualHost 221.*.*.*
- T+ `' C. p$ S* I0 @8 z* i4 h <VirtualHost 221.*.*.*>
9 E' g6 _) c U9 b( Q6 A DocumentRoot "c:/test" S( G5 J+ G: M3 ^! Z h4 m
ServerName 221.*.*.*
0 A' r/ b1 O/ s9 n1 |( F </VirtualHost> ) A+ K# c) ~3 J# `2 E% B
<VirtualHost 221.*.*.*>
: v4 }2 E9 b: { E4 i9 N DocumentRoot "c:/web"
4 n5 L- y* `8 [. ^, W, w ServerName www.webjx.com) `8 a! n# S3 d% n
</VirtualHost>
) s1 c* m5 k" j5 Q 6 c, z8 q- m- k9 J B9 N3 h
说明:蓝色部分是把通过221.*.*.*这个IP直接访问的请求指向c:/test目录下,这可以是个空目录,也可以在里面建一个首页文件,如index.hmtl,首面文件内容可以是一个声明,说明不能通过IP直接访问。红色部分的意思跟方法一是一样的。
0 k2 s9 }4 U1 v |$ U( o0 E! N9 g7 {% ~
/ _2 {0 h+ F$ ]4 H$ o: S
2. 禁止某些IP访问/只允许某些IP访问 " [* w ?7 T' Q3 i/ M, c$ z
如果要控制禁止某些非法IP访问,在Directory选项控制:
- o& w3 ~8 ]0 i# s( F8 Q( [) ?+ ?
, H6 S) F' V- E; O" mOrder allow,deny
( r* V8 s; B# a. ~, l% f Allow from all / @2 `( I3 {+ v; `- A
Deny from 10.0.0.1 #阻止一个IP
+ @9 S, l) z$ n6 V% F Deny from 192.168.0.0/24 #阻止一个IP段 6 W) ?" F8 g6 [
( R( f' y2 ?7 E! i/ J5 p
0 N- S/ s F& j只允许某些IP访问,适合比如就允许内部或者合作公司访问: ' p s! T c/ p
0 ^% x$ k+ N: g% B8 |9 POrder deny,allow 3 P& }, p. E* f% X
Deny from all
3 ~# g: h- L4 I8 u& r) E All from example.com #允许某个域名
9 Q. i+ K* l! u- [; ^All from 10.0.0.1 #允许一个iP & e1 V; I$ d' K {
All from 10.0.0.1 10.0.0.2 #允许多个iP + A# L+ ^+ c; E5 G8 G% {- ~
Allow from 10.1.0.0/255.255.0.0 #允许一个IP段,掩码对
! H0 e7 J9 N' @& ]All from 10.0.1 192.168 #允许一个IP段,后面不填写 `5 k- S' w6 [+ L, ?, \0 |% u
All from 192.168.0.0/24 #允许一个IP段,网络号 ' ~" d2 `" t4 o! G: `- z( f
注:修改后要重启apache
0 s. r; A3 D. _$ @! j2 Z |
|