Apache的幾種經常使用配置

 Apache是世界使用排名第一的Web服務器軟件。它能夠運行在幾乎全部普遍使用的計算機平臺上,因爲其跨平臺和安全性被普遍使用,是最流行的Web服務器端軟件之一。javascript

     下面介紹幾個經常使用的apache命令:php

/usr/local/apache2/bin/apachectl -M  查看常見的模塊(包括動態和靜態)css

/usr/local/apache2/bin/apachectl -l    查看加載的靜態模塊html

/usr/local/apache2/bin/apachectl -t    檢查配置文件有無語法錯誤java

/usr/local/apache2/bin/apachectl graceful  加載配置文件,但不重啓web

/usr/local/apache2/bin/apachectl start/restart/stop   啓動/重啓/中止apache服務chrome

下列的配置在apache2.2.31版本實測。apache

1、用戶認證
vim

有些時候訪問網站下的一些頁面時,須要用戶認證。
瀏覽器

編輯虛擬主機的配置文件:

vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

寫入:

  <Directory /data/www/abc>     #/data/www/abc爲將要訪問的頁面的目錄

     AllowOverride AuthConfig

     AuthName "cct"         

     AuthType Basic

     AuthUserFile /data/.htpasswd  #指定存放用戶名和密碼的文件

     require valid-user

  </Directory>

  保存退出,生成密碼文件

  htpasswd -c /data/.htpasswd cct #指定用戶名爲cct,輸入本身設定的密碼

 /usr/local/apache2/bin/apachectl graceful  加載配置

     2、默認虛擬主機

   有些時候,爲了web服務安全性,咱們須要設置默認的虛擬主機。

    編輯虛擬主機的配置文件:

  <VirtualHost *:80>

    DocumentRoot "/tmp/111"     #該目錄能夠不存在

    ServerName 111.com

  </VirtualHost>

  <VirtualHost *:80>

    DocumentRoot "/data/www"

    ServerName www.test.com

    ServerAlias www.aaa.com

   </VirtualHost>

將這段設定放在虛擬主機配置的最上面。除了已做過設置的域名(aaa、test)外,其他訪問的域名均跳轉到/tmp/111下。

  3、rewrite規則

下列代碼均寫在<IfModule mod_rewrite.c>模塊下

1.域名301跳轉

  web服務可能會用到多個域名,域名有主有次,輸入次域名會自動跳轉到主域名進行訪問。設定爲301永久跳轉,302是暫時跳轉。

編輯虛擬主機的配置文件:

寫入:

   <IfModule mod_rewrite.c>

        RewriteEngine on      #打開rewrite功能

        RewriteCond %{HTTP_HOST} ^www.aaa.com$ [OR]

        RewriteCond %{HTTP_HOST} ^www.bbb.com$  

        RewriteRule ^/(.*)$ http://www.test.com/$1 [R=301,L]   

   </IfModule>   

 調用了rewrite模塊,RewriteCond是跳轉條件,RewriteRule是跳轉規則。 

2.禁止指定user_agent

  RewriteCond %{HTTP_USER_AGENT} ^.*curl.* [NC,OR]  #禁止curl和chrome瀏覽器訪問

  RewriteCond %{HTTP_USER_AGENT} ^.*chrome.* [NC]  #NC是不區分大小寫的意思

  RewriteRule .* - [F]   #爲禁止的意思

3.經過rewrite限制某個目錄

 RewriteCond %{REQUEST_URI} ^.*/tmp/.* [NC]  #禁止訪問tmp目錄

  RewriteRule .* - [F]

4.rewrite規則

1) [R=301](force redirect) 強制外部重定向

2) [F]禁用URL,返回403HTTP狀態碼

3)[NC](no case) 不區分大小寫

4) [OR] 或者

變量:

%{HTTP_USER_AGENT}      表示:訪問的user_agent

%{HTTP_HOST}    表示:當前訪問的網址,只是指前綴部分,格式是www.xxx.com不包括「http://」和「/」

%{REQUEST_URI}     表示:表示訪問的相對地址,就是相對根目錄的地址,就是域名/後面的成分,格式上包括最前面的「/」,

www.123.com/xiang/1.html 黑字表示HOST,綠色部分表示URI

4、日誌切割與管理

 web服務器出現大量的訪問日誌和錯誤日誌,因此咱們要對日誌進行切割,方便管理人員的查詢。一些並不重要的記錄,咱們能夠規定日誌中不顯示這些。

 首先咱們先將虛擬主機配置文件裏的日誌記錄打開,日誌的路徑在/usr/local/apache2/logs下

 ErrorLog "logs/test.com-error_log"  #錯誤日誌

 CustomLog "logs/test.com-access_log" common    #common是日誌類型

 在apache的主配置文件裏咱們能夠看到日誌的相關格式規定

 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

 LogFormat "%h %l %u %t \"%r\" %>s %b" common

 %h 是來源ip

 %u 訪問的user

 %t時間

 %r 動做

 有些時候一些用戶使用代理服務器,這裏的%h會顯示代理ip,在%h後面加上%{X-FORWARDED-FOR}i 即顯示真實ip。

1.日誌切割

修改虛擬主機的access log的定義:

  CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/test.com-access_%Y%m%d_log 86400" combined      #%Y%m%d規定年月日; 86400秒即爲一天切割。

2.不記錄指定文件類型的日誌

   ErrorLog "logs/test.com-error_log"

 SetEnvIf Request_URI ".*\.gif$" p_w_picpath-request   #對gif文件作一個標記 p_w_picpath-request,也能夠寫成abc   

 SetEnvIf Request_URI ".*\.jpg$" p_w_picpath-request     #setenvif要和customlog寫在一塊兒

 SetEnvIf Request_URI ".*\.png$" p_w_picpath-request

 SetEnvIf Request_URI ".*\.bmp$" p_w_picpath-request

 SetEnvIf Request_URI ".*\.swf$" p_w_picpath-request

 SetEnvIf Request_URI ".*\.js$" p_w_picpath-request

 SetEnvIf Request_URI ".*\.css$" p_w_picpath-request

 CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/test.com-access_%Y%m%d_log 86400" combined env=!p_w_picpath-request     #不記錄作過標記的文件

注意:SetEnvIf要和customlog寫在一塊兒,中間不要有分隔。

5、配置靜態緩存

對於圖片,html,css,javascripts等,讓客戶端緩存,讓訪問時不須要去服務器上訪問,提升用戶體驗,須要提早確認是否支持mod_expires.c模塊

<IfModule mod_expires.c>

  ExpiresActive on

  ExpiresByType p_w_picpath/gif  "access plus 1 days"

  ExpiresByType p_w_picpath/jpeg "access plus 24 hours"

  ExpiresByType p_w_picpath/png  "access plus 24 hours"

  ExpiresByType text/css   "now plus 2 hours"

  ExpiresByType application/x-javascript      "now plus 2 hours"

  ExpiresByType application/x-shockwave-flash "now plus 2 hours"

  ExpiresDefault "now plus 0 min"

</IfModule>

6、配置防盜鏈

  防止其餘的網站大量使用本身網站裏的一些圖片,流量跑的是本身的網站,形成帶寬的浪費。防止圖片被盜用。

在虛擬主機的配置文件里加上:

SetEnvIfNoCase Referer "^http://.*\.test\.com" local_ref  #給網址作標註

    <filesmatch "\.(txt|png|gif|doc|mp3|zip|rar|jpg|css|js)">  #規定一下哪些類型的文件

    Order Allow,Deny                             #禁止引用 

    Allow from env=local_ref                      #容許local_ref引用

</filesmatch>

7、訪問控制

咱們能夠針對某些目錄進行訪問控制,禁止一些IP地址的訪問

<Directory "/data/www">

    AllowOverride None

    Options None

    Order allow,deny

    Allow from all

    deny from 192.168.206.1    #該IP地址爲禁止訪問的ip地址 

</Directory>

還有一種以URI作限制訪問

<filesmatch "(.*)admin(.*)">

    Order allow,deny

    Allow from all

    Deny from 192.168.206.1

</filesmatch>

全部uri中包括admin的都進行ip訪問限制

8、apache禁止解析php

多用在在網絡安全方面,好比:某些目錄上傳文件,避免上傳的有***,針對某些路徑禁止解析php。

編輯虛擬主機的配置文件,加入:

<Directory /data/www/data>  #對data目錄進行php解析限制。

php_admin_flag engine off  #將php解析引擎關閉

<filesmatch "(.*)php">  #匹配

Order deny,allow

Deny from all   #禁止解析全部,若不加filesmatch,只是將engine off,在瀏覽器訪問該文件時,             會將php文件下載下來,這樣很差

</filesmatch>

</Directory>


Apache的幾種經常使用設置就整理到這,但願可以幫到運維的同仁們!

相關文章
相關標籤/搜索