天天看點

Apache伺服器配置技巧

本文簡要介紹了十幾個Apache 的配置技巧:

  1、如何設 置請求等待時間

  在httpd.conf裡面設定:

  TimeOut n

  其中n為整數,機關是秒。

  設定這個TimeOut适用于三種情況:

  2、如何接收一個get請求的總時間

  接收一個post和put請求的TCP包之間的時間

  TCP包傳輸中的響應(ack)時間間隔

  3、如何使得apache監聽在特定的端口

  修改httpd.conf裡面關于Listen的選項,例如:

  Listen 8000

  是使apache監聽在8000端口

  而如果要同時指定監聽端口和監聽位址,可以使用:

  Listen 192.170.2.1:80

  Listen 192.170.2.5:8000

  這樣就使得apache同時監聽在192.170.2.1的80端口和192.170.2.5的8000端口。

  當然也可以在httpd.conf裡面設定:

  Port 80

  這樣來實作類似的效果。

  4、如何設定apache的最大空閑程序數

  修改httpd.conf,在裡面設定:

  MaxSpareServers n

  其中n是一個整數。這樣當空閑程序超過n的時候,apache主程序會殺掉多餘的空閑程序而保持空閑程序在n,節省了系統資源。如果在一個apache非常繁忙的站點調節這個參數才是必要的,但是在任何時候把這個參數調到很大都不是一個好主意。

  同時也可以設定:

  MinSpareServers n

  來限制最少空閑程序數目來加快反應速度。

  5、apache如何設定啟動時的子服務程序個數

  StartServers 5

  這樣啟動apache後就有5個空閑子程序等待接受請求。

  也可以參考MinSpareServers和MaxSpareServers設定。

6、如何在apache中設定每個連接配接的最大請求數

  MaxKeepAliveRequests 100

  這樣就能保證在一個連接配接中,如果同時請求數達到100就不再響應這個連接配接的新請求,保證了系統資源不會被某個連接配接大量占用。但是在實際配置中要求盡量把這個數值調高來獲得較高的系統性能。

  7、如何在apache中設定session的持續時間

  在apache1.2以上的版本中,可以在httpd.conf裡面設定:

  KeepAlive on

  KeepAliveTimeout 15

  這樣就能限制每個session的保持時間是15秒。session的使用可以使得很多請求都可以通過同一個tcp連接配接來發送,節約了網絡資源和系統資源。

  8、如何使得apache對用戶端進行域名驗證

  可以在httpd.conf裡面設定:

  HostnameLookups on|off|double

  如果是使用on,那麼隻有進行一次反查,如果用double,那麼進行反查之後還要進行一次正向解析,隻有兩次的結果互相符合才行,而off就是不進行域名驗證。

  如果為了安全,建議使用double;為了加快通路速度,建議使用off。

  9、如何使得apache隻監聽在特定的ip

  修改httpd.conf,在裡面使用

  BindAddress 192.168.0.1

  這樣就能使得apache隻監聽外界對192.168.0.1的http請求。如果使用:

  BindAddress *

  就表明apache監聽所有網絡接口上的http請求。

  當然用防火牆也可以實作。

10、apache中如何限制http請求的消息主體的大小

  LimitRequestBody n

  n是整數,機關是byte。

  cgi腳本一般把表單裡面内容作為消息的主體送出給伺服器處理,是以現在消息主體的大小在使用cgi的時候很有用。比如使用cgi來上傳檔案,如果有設定:

  LimitRequestBody 102400

  那麼上傳檔案超過100k的時候就會報錯。

  11、如何修改apache的文檔根目錄

  修改httpd.conf裡面的DocumentRoot選項到指定的目錄,比如:

  DocumentRoot /www/htdocs

  這樣http://localhost/index.html就是對應/www/htdocs/index.html

  12、如何修改apache的最大連接配接數

  在httpd.conf中設定:

  MaxClients n

  n是整數,表示最大連接配接數,取值範圍在1和256之間,如果要讓apache支援更多的連接配接數,那麼需要修改源碼中的httpd.h檔案,把定義的HARD_SERVER_LIMIT值改大然後再編譯。

  13、如何使每個使用者有獨立的cgi-bin目錄

  有兩種可選擇的方法:

  (1)在Apache配置檔案裡面關于public_html的設定後面加入下面的屬性:

  ScriptAliasMatch ^/~([^/]*)/cgi-bin/(.*) /home/$1/cgi-bin/$2

  (2)在Apache配置檔案裡面關于public_html的設定裡面加入下面的屬性:

  <Directory /home/*/public_html/cgi-bin>

    Options ExecCGI

    SetHandler cgi-script

  </Directory>

14、如何調整Apache的最大程序數

Apache允許為請求開的最大程序數是256,MaxClients的限制是256.如果使用者多了,使用者就隻能看到Waiting for reply....然後等到下一個可用程序的出現。這個最大數,是Apache的程式決定的--它的NT版可以有1024,但Unix版隻有256,你可以在src/include/httpd.h中看到:

#ifndef HARD_SERVER_LIMIT

#ifdef WIN32

#define HARD_SERVER_LIMIT 1024

#else

#define HARD_SERVER_LIMIT 256

#endif

你可以把它調到1024,然後再編譯你的系統。

  15、如何屏蔽來自某個Internet位址的使用者通路Apache伺服器

  可以使用deny和allow來限制通路,比如要禁止202.202.202.xx網絡的使用者通路:

  <Directory /www/htdocs>

  order deny,allow

  deny from 202.202.202.0/24

  16、如何在日志裡面記錄apache浏覽器和引用資訊

  你需要把mod_log_config編譯到你的Apache伺服器中,然後使用下面類似的配置:

  CustomLog logs/access_log "%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i""

  17、如何修改Apache傳回的頭部資訊

  問題分析:當用戶端連接配接到Apache伺服器的時候,Apache一般會傳回伺服器版本、非預設子產品等資訊,例如:

  Server: Apache/1.3.26 (Unix) mod_perl/1.26

  解決:

  你可以在Apache的配置檔案裡面作如下設定讓它傳回的關于伺服器的資訊減少到最少:

  ServerTokens Prod

  注意:

  這樣設定以後Apache還會傳回一定的伺服器資訊,比如:

  Server: Apache

  但是這個不會對伺服器安全産生太多的影響,因為很多掃描軟體是掃描的時候是不顧你伺服器傳回的頭部資訊的。你如果想把伺服器傳回的相關資訊變成:

  Server: It iS a nOnE-aPaCHe Server

  那麼你就要去修改源碼了。