Apache的訪問控制


 

目錄配置段


注釋不能寫在指令后面,下面這樣是不行的,應當換行,但為了閱讀方便我就這么寫了


Alias /dir/  "/var/www/html/admin"      #路徑的別名 這樣就可以在域名后面加 /dir 而實際訪問的是 admin下面的文件
<Directory /var/www/html/>
   Order Allow,Deny                              #權限的順序是先允許 后拒絕
   Deny from 192.168.1.12                  #拒絕192.168.1.12訪問
   Allow from all                                     #允許所有的訪問
   Options Indexes FollowSymLink     #允許目錄索引 符號鏈接
   AllowOverride None                          #不能被目錄下的.htaccess覆蓋
   # AllowOverride all                            允許被目錄下的.htaccess規則覆蓋 默認是允許的
</Directory>

 

文件配置段


<Files "hello.html">
  Order Deny,Allow     #先拒絕 后允許
  Deny from all            #拒絕所有的訪問所有目錄下的hello.html文件
</Files>

如果文件配置段嵌套到目錄配置段,就只控制那個目錄下文件的訪問權限

url配置段


<Location /admin>
   Deny from all      #拒絕所有的訪問/admin這個url
</Location>

 

文件目錄url都可用通配符或正則
<Directory "/var/*/html/">
......
</Directory>

 

<FilesMatch \.(gif|png)>
  Deny from all  #拒絕訪問圖片
</FilesMatch>

 

 

Apache的虛擬主機配置


基於ip:
<VirtualHost 192.168.142.2:80>
 ServerAdmin zhaoyp1985@163.com
 DocumentRoot "/var/www/web1"
 ServerName www.aaa.com
 ErrorLog "/home/log/error/error.log"
 CustomLog "/home/log/coustom/error.log"
</VirtualHost>

<VirtualHost 192.168.142.1:80>
 ServerAdmin zhaoyp1985@163.com
 DocumentRoot "/var/www/web1"
 ServerName www.bbb.com
 ErrorLog "/home/log/error/error.log"
 CustomLog "/home/log/coustom/error.log"
</VirtualHost>

 


基於域名:
NameVirtualHost *:80
#保留原來的localhost
<VirtualHost *:80 >
   ServerName *
   DocumentRoot "/var/www/html"
</VirtualHost>

 

#虛擬主機www.aaa.com
<VirtualHost *:80 >
 ServerAdmin zhaoyp1985@163.com
 DocumentRoot "/var/www/web1"
 ServerName www.aaa.com
 ErrorLog "/home/log/error/error.log"
 CustomLog "/home/log/coustom/error.log"
</VirtualHost>

 

#虛擬主機www.bbb.com
<VirtualHost *:80 >
 ServerAdmin zhaoyp1985@163.com
 DocumentRoot "/var/www/web2"
 ServerName www.bbb.com
 ErrorLog "/home/log/error/error.log"
 CustomLog "/home/log/coustom/error.log"
</VirtualHost>

 

泛域名的解析

<VirtualHost *:80>
  ServerName *.aaa.com
  VirtualDocumentRoot  /var/www/cct/home/%1
 <Directory " /var/www/cct/home/" >
  AllowOverride All
  Order Allow,Deny
  Allow from all
  </Directory>
</VirtualHost>


其中的%1是*.aaa.com的第一部分 見下面:

 

目錄名稱的轉換

本模塊中的所有指令都用於將字符串替換為路徑名。被替換的字符串(以后稱為"name")可以是服務器名(參見UseCanonicalName指令以了解決策方法)或者是"點數字"格式的虛擬主機IP地址。替換操作由printf格式修飾符控制,該修飾符有以下幾種格式:

%% 插入一個百分號(%)
%p 插入虛擬主機的端口號
%N.M 插入名稱(或者名稱的一部分)

NM被用來指定name中的子字符串。N從name中用小數點分隔的某部分中選取,而M是從N選中的字符串中選取部分字符。M是可選的且默認為"0";小數點當且僅當M存在時才必須書寫。替換操作如下:

0 整個name
1 第一部分
2 第二部分
-1 最后一部分
-2 倒數第二部分
2+ 從第二部分開始到最后的所有部分
-2+ 倒數第二部分以及之前的各部分
1+-1+ 等同於0

如果NM大於部分的個數,則簡單的用下划線來替換。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM