LAMP-----APACHE 配置:

內容大致分爲 個板塊(在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   最後 將命名更改掉 

wKiom1TQ0iTzhDwDAACdYyqcLoM620.jpg

打開虛擬主機配置文件  清除註釋  CustomLog "/tmp/1.log" suiyiname    將引號內修改爲自己想指定的日誌目錄

wKioL1TQ0w7ShZ5XAACcwUyI43o089.jpg


  寫在     虛擬主機 配置文件   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
全部都不能通行(默認的),記住即可



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章