內容大致分爲 個板塊(在discuz論壇環境下)
1:用戶認證模式;
2:域名跳轉
3:訪問日誌的切割與選擇
4:靜態緩存
5:防盜鏈
6:訪問控制
虛擬主機配置文件中,需要加入
<Directory /data/www/admin.php>
AllowOverride AuthConfig
AuthName "frank share web"
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
</Directory>
保存後,然後
創建apache的驗證用戶
/usr/local/apache2/bin/htpasswd -c /data/.htpasswd pekut(驗證用戶名)
然後輸入倆次密碼
#第一次創建用戶要用到-c 參數 第2次添加用戶,就不用-c參數
/usr/local/apache2/bin/htpasswd /data/.htpasswd pekut1
如果你想修改密碼,可以如下
/usr/local/apache2/bin/htpasswd -m .htpasswd test2
-m 爲 制定爲md5加密算法
cat /data/.htpasswd 查看用戶是否生成
重啓apache,即可。
到此,你已經配置完成。下面介紹另一種方式:
##################################
vi http.conf
在相應的虛擬主機配置文件段,加入
<Directory *>
AllowOverride AuthConfig
AuthName "自定義的"
AuthType Basic
AuthUserFile /data/.htpasswd // 這個目錄你可以隨便寫一個,沒有限制
require valid-user
</Directory>
保存後,然後
創建apache的驗證用戶
htpasswd -c /data/.htpasswd test
需求:要把訪問域名 www.domain1.com 的域名轉發到 www.domain2.com 上
實現:在相關的虛擬主機中增加
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.onda.com$ //條件(被跳轉地址)
RewriteRule ^/(.*)$ http://www.111.com/$1 [R=301,L] //規則 (跳轉至)
</IfModule>
效果 輸入 www.onda.com/fdsfdf 跳轉到 www.111.com/fdsfdf
重啓apache 服務生效
如果是多個域名重定向到一個域名
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.onda.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.ondas.com$
RewriteRule ^(.*)$ http://www.111.com/$1 [R=301,L]
</IfModule>
rewrite 支持正則
3. 配置apache的訪問日誌 (tail -f /tmp/1.log )
vim /usr/local/apa/conf/http 找到 LogFormat ( 此行最後 一段白色字母 是命名 )
新加一行LogFormat 最後 將命名更改掉
打開虛擬主機配置文件 清除註釋 CustomLog "/tmp/1.log" suiyiname 將引號內修改爲自己想指定的日誌目錄
寫在 虛擬主機 配置文件 CustomLog "/tmp/1.log" suiyiname 的上面
用來節約磁盤空間,日誌內不記錄圖片類文件
SetEnvIf Request_URI ".*\.gif$" image-request
SetEnvIf Request_URI ".*\.jpg$" image-request
SetEnvIf Request_URI ".*\.png$" image-request
SetEnvIf Request_URI ".*\.bmp$" image-request
SetEnvIf Request_URI ".*\.swf$" image-request
SetEnvIf Request_URI ".*\.js$" image-request
SetEnvIf Request_URI ".*\.css$" image-request
CustomLog "|/usr/local/apache2/bin/rotatelogs -l /tmp/access_%Y%m%d.log 86400" suiyiname env=!image-request
按照天來切割 按每天算
4.配置靜態緩存(僞靜態)
httpd.vhost 中加入
<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/x-shockwave-flash "now plus 2 hours"
ExpiresDefault "now plus 0 min"
</IfModule>
註釋:
Expires 語法如下:
ExpiresByType type/encoding "<base> [plus] <num> <type>}*"
其中<base>是下列之一:
access
now (等價於'access')
modification
plus關鍵字是可選的。
<num>必須是整數,
<type>是下列之一:
years
months
weeks
days
hours
minutes
seconds
5.防盜鏈
位置一般情況下在 /usr/local/apache/conf/httpd.conf
或者apache 2.2 的 /usr/local/apache2/conf/extra/httpd-vhost.conf
添加
SetEnvIfNoCase Referer "^http://www.ccvita.com" local_ref
SetEnvIfNoCase Referer "^http://ccvita.com" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
Deny from !env=local_ref
</filesmatch>
還一種寫法,是用正則的,這種寫法在各個版本的apache比較通用。
寫法是
SetEnvIfNoCase Referer "^http://.*\.yourdomin\.com" local_ref
SetEnvIfNoCase Referer ".*\.yourdomin\.com" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
Deny from all
</filesmatch>
配置完防盜鏈後 訪問網站會出現無法顯示 圖片的情況。
6.訪問控制
個東西確實挺容易讓我們迷糊。其實也不難,只要你掌握這樣一條規律即可:
首先舉個例子:
Order deny,allow
deny from all
allow from 127.0.0.1
我們判斷的依據是這樣的:
1. 看Order後面的,後面的優先級大於前面的
2. 如果deny在前,那麼就需要看deny from 這句,然後看allow from 這一句
3. 規則是一條一條的匹配的,不管是deny在前還是allow在前,都是會生效的。比如例子中,先deny 了所有,然後又allow了127.0.0.1,所以127.0.0.1是通過的。
不妨再多舉幾個例子:
Order allow,deny
deny from all
allow from 127.0.0.1
這個就會deny所有了,127.0.0.1也會被deny。因爲順序是先allow然後deny,雖然一開始allow了127.0.0.1,但是後面又拒絕了它。
Order allow,deny
deny from all
全部都不能通行
Order deny,allow
deny from all
全部都不能通行
Order deny,allow
全部都可以通行(默認的),記住即
Order allow,deny
全部都不能通行(默認的),記住即可