Apache和Nginx下禁止訪問特定的目錄或文件

你們是否測試Apache作了目錄禁止瀏覽後,目錄下面的txt文件仍是能夠顯示裏面的內容的。
例如:http://www.domain.com/test/此訪問會報403錯誤,可是若是test下有不少txt,你訪問該txt時;
例如:http://www.domain.com/test/a.txt,此時a.txt裏的內容會所有暴露在外面了(有時這個txt是很機密的文件),這樣以來就不安全了。
一樣:我在Nginx配置後後也存在這樣的問題,Apache下此問題的解決多謝NetSeek幫助。
以下是關於Apache和Nginx 限制該類事情辦法:

【apache配置禁止訪問】
1. 禁止訪問某些文件/目錄
增長Files選項來控制,好比要不容許訪問 .inc 擴展名的文件,保護php類庫:
<Files ~ "\.inc$">
   Order allow,deny
   Deny from all
</Files>

禁止訪問某些指定的目錄:(能夠用 <DirectoryMatch>   來進行正則匹配)

<Directory ~ "^/var/www/(.+/)*[0-9]{3}"> 
   Order allow,deny
   Deny from all
</Directory>

經過文件匹配來進行禁止,好比禁止全部針對圖片的訪問:
<FilesMatch \.(?i:gif|jpe?g|png)$>
   Order allow,deny
   Deny from all
</FilesMatch> 

針對URL相對路徑的禁止訪問:
<Location /dir/>
   Order allow,deny
   Deny from all
</Location> 

針對代理方式禁止對某些目標的訪問(<ProxyMatch> 能夠用來正則匹配),好比拒絕經過代理訪問cnn.com:
<Proxy http://cnn.com/*>
   Order allow,deny
   Deny from all
</Proxy> 

2. 禁止某些IP訪問/只容許某些IP訪問 
若是要控制禁止某些非法IP訪問,在Directory選項控制:
<Directory "/var/www/web/">
   Order allow,deny
   Allow from all
   Deny from 10.0.0.1 #阻止一個IP
   Deny from 192.168.0.0/24 #阻止一個IP段
</Directory>

只容許某些IP訪問,適合好比就容許內部或者合做公司訪問:
<Directory "/var/www/web/">
   Order deny,allow
   Deny from all
   All from example.com #容許某個域名
   All from 10.0.0.1 #容許一個iP
   All from 10.0.0.1 10.0.0.2 #容許多個iP
   Allow from 10.1.0.0/255.255.0.0 #容許一個IP段,掩碼對
   All from 10.0.1 192.168 #容許一個IP段,後面不填寫
   All from 192.168.0.0/24 #容許一個IP段,網絡號
</Directory>


Apache:解決辦法;
<Directory "/home/domain/public_html">
Options -Indexes FollowSymLinks
AllowOverride All
<Files ~ ".txt">
Order allow,deny
Deny from all
</Files>
</Directory>

Nginx:解決辦法;
location ~* \.(txt|doc)$ {
if (-f $request_filename) {
root /home/domain/public_html/test;
break;

}

}php


Nginx下請你們注意標點符號的使用,不要漏掉後面的「;」!html

相關文章
相關標籤/搜索