11.25 配置防盜鏈
11.26 訪問控制Directory
11.27 訪問控制FilesMatch
擴展
幾種限制ip的方法 http://ask.apelearn.com/question/6519
apache 自定義header http://ask.apelearn.com/question/830
apache的keepalive和keepalivetimeout http://ask.apelearn.com/question/556javascript
Directory針對目錄進行 <Directory /data/wwwroot/www.123.com> //用於定義做用於那個目錄 SetEnvIfNoCase Referer 「http://www.123.com」 local_ref //定義白名單 SetEnvIfNoCase Referer 「http://123.com」 local_ref //定義白名單 SetEnvIfNoCase Referer 「^$」 local_ref //定義空的頁面的白名單 <filesmatch 「.(txt|doc|mp3|zip|rar|jpg|gif|png)」> //定義規則 Order Allow,Deny //定義訪問控制 Allow from env=local_ref </filesmatch> </Directory>
Directory針對目錄進行 <Directory /data/wwwroot/www.111.com> //用於定義做用於哪一個目錄,配置防盜鏈,就是定義本站點 SetEnvIfNoCase Referer 「http://www.111.com」 local_ref //定義Referer白名單 SetEnvIfNoCase Referer 「http://aaa.com」 local_ref //定義白名單 SetEnvIfNoCase Referer 「^$」 local_ref //定義空的Referer頁面爲白名單 <filesmatch 「.(txt|doc|mp3|zip|rar|jpg|gif|png)」> //定義規則,這裏的filesmatch中f 和 m 能夠大寫能夠小寫 Order Allow,Deny //定義訪問控制,order用來定義訪問順序 Allow from env=local_ref </filesmatch> </Directory>
<VirtualHost *:80> DocumentRoot "/data/wwwroot/abc.com" ServerName abc.com ServerAlias www.abc.com www.123.com ErrorLog "logs/abc.com-error_log" CustomLog "logs/abc.com-access_log" common </VirtualHost> <VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.example.com 2111.com.cn # <Directory /data/wwwroot/111.com> # <FilesMatch 123.php> # AllowOverride AuthConfig # AuthName "111.com user auth" # AuthType Basic # AuthUserFile /data/.htpasswd # require valid-user # </FilesMatch> #</Directory> <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} !^111.com$ RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L] </IfModule> <IfModule mod_expires.c> ExpiresActive on ExpiresByType image/gif "access plus 1 days" ExpiresByType image/jpeg "access plus 24 hours" ExpiresByType image/png "access plus 24 hours" ExpiresByType text/css "now plus 2 hour" ExpiresByType application/x-javascript "now plus 2 hours" ExpiresByType application/javascript "now plus 2 hours" ExpiresByType application/x-shockwave-flash "now plus 2 hours" ExpiresDefault "now plus 0 min" </IfModule> <Directory /data/wwwroot/www.111.com> SetEnvIfNoCase Referer "http://www.111.com" local_ref SetEnvIfNoCase Referer "http://111.com" local_ref # SetEnvIfNoCase Referer "^$" local_ref <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)"> Order Allow,Deny Allow from env=local_ref </filesmatch> </Directory> ErrorLog "logs/111.com-error_log" SetEnvIf Request_URI ".*\.gif$" img SetEnvIf Request_URI ".*\.jpg$" img SetEnvIf Request_URI ".*\.png$" img SetEnvIf Request_URI ".*\.bmp$" img SetEnvIf Request_URI ".*\.swf$" img SetEnvIf Request_URI ".*\.js$" img SetEnvIf Request_URI ".*\.css$" img CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.log 86400" combined env=!img </VirtualHost>
[root@yong-02 ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/data/wwwroot/abc.com" ServerName abc.com ServerAlias www.abc.com www.123.com ErrorLog "logs/abc.com-error_log" CustomLog "logs/abc.com-access_log" common </VirtualHost> <VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.example.com 2111.com.cn # <Directory /data/wwwroot/111.com> # <FilesMatch 123.php> # AllowOverride AuthConfig # AuthName "111.com user auth" # AuthType Basic # AuthUserFile /data/.htpasswd # require valid-user # </FilesMatch> #</Directory> <Directory /data/wwwroot/111.com> SetEnvIfNoCase Referer "http://www.111.com" local_ref SetEnvIfNoCase Referer "http://aaa.com" local_ref # SetEnvIfNoCase Referer "^$" local_ref <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png)"> Order Allow,Deny Allow from env=local_ref </filesmatch> </Directory> ErrorLog "logs/111.com-error_log" SetEnvIf Request_URI ".*\.gif$" img SetEnvIf Request_URI ".*\.jpg$" img SetEnvIf Request_URI ".*\.png$" img SetEnvIf Request_URI ".*\.bmp$" img SetEnvIf Request_URI ".*\.swf$" img SetEnvIf Request_URI ".*\.js$" img SetEnvIf Request_URI ".*\.css$" img CustomLog "|/usr/local/apache2/bin/rotatelogs -l logs/123.com-access_%Y%m%d.log 86400" combined env=!img </VirtualHost>
[root@yong-02 111.com]# /usr/local/apache2/bin/apachectl -t Syntax OK [root@yong-02 111.com]# /usr/local/apache2/bin/apachectl graceful
SetEnvIfNoCase Referer "http://ask.apelearn.com" local_ref
[root@yong-02 111.com]# /usr/local/apache2/bin/apachectl -t Syntax OK [root@yong-02 111.com]# /usr/local/apache2/bin/apachectl graceful
[root@yong-02 ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 更改前,去除前面的註釋符 # SetEnvIfNoCase Referer "^$" local_ref 更改後 SetEnvIfNoCase Referer "^$" local_ref
[root@yong-02 111.com]# curl -x127.0.0.1:80 111.com/images/baidu.png -I HTTP/1.1 200 OK Date: Thu, 31 May 2018 15:01:30 GMT Server: Apache/2.4.33 (Unix) PHP/7.1.6 Last-Modified: Wed, 30 May 2018 13:46:34 GMT ETag: "a46d-56d6c9435c280" Accept-Ranges: bytes Content-Length: 42093 Content-Type: image/png
[root@yong-02 111.com]# curl -e "http://www.qq.com/123.txt" -x127.0.0.1:80 111.com/images/baidu.png -I HTTP/1.1 403 Forbidden Date: Thu, 31 May 2018 15:04:21 GMT Server: Apache/2.4.33 (Unix) PHP/7.1.6 Content-Type: text/html; charset=iso-8859-1 [root@yong-02 111.com]# curl -e "http://111.com/123.php" -x127.0.0.1:80 111.com/images/baidu.png -I HTTP/1.1 200 OK Date: Thu, 31 May 2018 15:04:41 GMT Server: Apache/2.4.33 (Unix) PHP/7.1.6 Last-Modified: Wed, 30 May 2018 13:46:34 GMT ETag: "a46d-56d6c9435c280" Accept-Ranges: bytes Content-Length: 42093 Content-Type: image/png
<Directory /data/wwwroot/111.com/admin/> Order deny,allow Deny from all Allow from 127.0.0.1 </Directory>
[root@yong-02 ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 將代碼放在防盜鏈代碼上面,防止衝突 <Directory /data/wwwroot/111.com/admin/> Order deny,allow Deny from all Allow from 127.0.0.1 </Directory>
[root@yong-02 111.com]# mkdir admin [root@yong-02 111.com]# cd admin/ [root@yong-02 admin]# touch index.php [root@yong-02 admin]# echo "12113414123">index.php [root@yong-02 admin]# cat index.php 12113414123
[root@yong-02 admin]# /usr/local/apache2/bin/apachectl -t Syntax OK [root@yong-02 admin]# /usr/local/apache2/bin/apachectl graceful
[root@yong-02 admin]# curl -x127.0.0.1:80 111.com/admin/index.php -I HTTP/1.1 200 OK Date: Thu, 31 May 2018 15:21:22 GMT Server: Apache/2.4.33 (Unix) PHP/7.1.6 X-Powered-By: PHP/7.1.6 Content-Type: text/html; charset=UTF-8
[root@yong-02 admin]# curl -x192.168.180.135:80 111.com/admin/index.php -I HTTP/1.1 403 Forbidden Date: Thu, 31 May 2018 15:24:48 GMT Server: Apache/2.4.33 (Unix) PHP/7.1.6 Content-Type: text/html; charset=iso-8859-1
<Directory /data/wwwroot/www.123.com> //功能做用目錄 <FilesMatch "admin.php(.*)"> //針對admin.php(.*)這個類型的文件,進行控制 Order deny,allow Deny from all Allow from 127.0.0.1 </FilesMatch> </Directory>
[root@yong-02 admin]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf <Directory /data/wwwroot/111.com> <FilesMatch "admin.php(.*)"> Order deny,allow Deny from all Allow from 127.0.0.1 </FilesMatch> </Directory>
[root@yong-02 admin]# /usr/local/apache2/bin/apachectl -t Syntax OK [root@yong-02 admin]# /usr/local/apache2/bin/apachectl graceful
這裏沒有對admin目錄作任何限制,作的FilesMatch跟這個不匹配,沒有遇到控制語句,因此訪問是404 [root@yong-02 admin]# curl -x192.168.180.135:80 111.com/admin/fasdfasdf -I HTTP/1.1 404 Not Found Date: Thu, 31 May 2018 15:36:57 GMT Server: Apache/2.4.33 (Unix) PHP/7.1.6 Content-Type: text/html; charset=iso-8859-1 有特殊符號須要用 」 單引號括起來 [root@yong-02 111.com]# curl -x192.168.180.135:80 'http://111.com/admin.php?fasdfasdf' -I HTTP/1.1 403 Forbidden Date: Thu, 31 May 2018 15:44:16 GMT Server: Apache/2.4.33 (Unix) PHP/7.1.6 Content-Type: text/html; charset=iso-8859-1 [root@yong-02 111.com]# curl -x127.0.0.1:80 'http://111.com/admin.php?fasdfasdf' -I HTTP/1.1 404 Not Found Date: Thu, 31 May 2018 15:44:45 GMT Server: Apache/2.4.33 (Unix) PHP/7.1.6 Content-Type: text/html; charset=iso-8859-1