編輯虛擬主機配置文件:php
[root@1 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.example.com <Directory /data/wwwroot/111.com> SetEnvIfNoCase Referer "http://111.com" local_ref SetEnvIfNoCase Referer "http://ask.apelearn.com" local_ref SetEnvIfNoCase Referer "^$" local_ref #定義referer白名單 <FilesMatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png)"> Order Allow,Deny Allow from env=local_ref #定義規則:容許變量local_ref指定的referer訪問,拒絕其餘全部訪問。 </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/111.com-access_%Y%m%d.log 86400" combined env=!img #CustomLog "logs/111.com-access_log" combined env=!img </VirtualHost> 檢測語法錯誤並重載: [root@1 ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@1 ~]# /usr/local/apache2.4/bin/apachectl graceful
注: 若是在referer白名單中不加「^#」(空referer),直接訪問指定內容將會被拒絕。css
curl -e 指定refererhtml
[root@1 ~]# curl -e "http://ask.apelearn.com/" -x192.168.8.131:80 111.com/baidu.png -I
編輯虛擬主機配置文件:mysql
在配置文件加入以下參數: [root@1 admin]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf …… <Directory /data/wwwroot/111.com/admin/> Order deny,allow Deny from all Allow from 127.0.0.1 #只容許IP--127.0.0.1訪問「/data/wwwroot/111.com/admin/」目錄中的內容 </Directory> …… [root@1 admin]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@1 admin]# /usr/local/apache2.4/bin/apachectl graceful 測試: [root1 admin]# curl -x127.0.0.1:80 111.com/admin/index.php 121212 更換IP訪問: [root@1 admin]# curl -x192.168.8.131:80 111.com/admin/index.php -I HTTP/1.1 403 Forbidden Date: Wed, 02 Aug 2017 08:48:49 GMT Server: Apache/2.4.27 (Unix) PHP/5.6.30 Content-Type: text/html; charset=iso-8859-1 #報錯(403)!!!即,只有指定IP--127.0.0.1能夠訪問該目錄。
**說明:**本節用於設定指定IP訪問指定目錄的權限!sql
使用FilesMatch參數: [root@1 admin]# vim /usr/local/apache2.4/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@1 admin]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@1 admin]# /usr/local/apache2.4/bin/apachectl graceful [root@1 admin]# curl -x127.0.0.1:80 111.com/admin.php -I HTTP/1.1 404 Not Found Date: Wed, 02 Aug 2017 09:24:22 GMT Server: Apache/2.4.27 (Unix) PHP/5.6.30 Content-Type: text/html; charset=iso-8859-1 #由於訪問的文件不存在,因此報錯:404!
說明: 本節內容應用於對某些請求設定權限。apache
禁止訪問某些文件/目錄vim
增長Files選項來控制,好比要不容許訪問 .inc 擴展名的文件,保護php類庫:服務器
<Files~"\.inc$"> Order Allow,Deny Deny from all </Files>
禁止訪問某些指定的目錄curl
可使用<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>
[root@1 ~]# /usr/local/apache2/bin/apachectl -M
若是沒有加載,須要進行加載配置。
2. 設置header
在Apache配置文件中加入下面參數:
Header add MyHeader "Hello"
在APACHE的httpd.conf中,KeepAlive指的是保持鏈接活躍,相似於Mysql的永久鏈接。換一句話說,若是將KeepAlive設置爲On,那麼來自同一客戶端的請求就不須要再一次鏈接,避免每次請求都要新建一個鏈接而加劇服務器的負擔。
KeepAlive的鏈接活躍時間固然是受KeepAliveTimeOut限制的。若是第二次請求和第一次請求之間超過KeepAliveTimeOut的時間的話,第一次鏈接就會中斷,再新建第二個鏈接。
因此,通常狀況下,圖片較多的網站應該把KeepAlive設爲On。可是KeepAliveTimeOut應該設置爲多少秒就是一個值得討論的問題了。
若是KeepAliveTimeOut設置的時間太短,例如設置爲1秒,那麼APACHE就會頻繁的創建新鏈接,固然會耗費很多的資源;反過來,若是KeepAliveTimeOut設置的時間過長,例如設置爲300秒,那麼APACHE中確定有不少無用的鏈接會佔用服務器的資源,也不是一件好事。
因此,到底要把KeepAliveTimeOut設置爲多少,要看網站的流量、服務器的配置而定。
其實,這和MySql的機制有點類似,KeepAlive至關於mysql_ connect或mysql_ pconnect,KeepAliveTimeOut至關於wait_timeout。