IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當前所在位置: 首頁服務器WEB服務器 → 通過內(nèi)核httpd實現(xiàn)web服務加速

通過內(nèi)核httpd實現(xiàn)web服務加速

時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)

一、簡介

從linux2.4.13開始,在Networking options出現(xiàn)了一個試驗性的選項-"[ ] Kernel httpd acceleration (EXPERIMENTAL)",什么是kHTTPd呢?它是一個Linux環(huán)境下的web服務器。kHTTPd和其它web服務器的不同之處在于其是作為內(nèi)核的一部分運行在Linux的內(nèi)核中(可以看成是一個設(shè)備驅(qū)動)。

kHTTPd僅僅處理靜態(tài)(基于靜態(tài)文件的)的web頁面,而將所有的對于非靜態(tài)內(nèi)容的請求傳遞給正常的運行于用戶空間的web服務器來處理,如apache、Zeus等,而這些運行在用戶空間的web服務器并不需要任何修改。

對于靜態(tài)web頁面的http請求的處理不是一個非常復雜過程,但是這卻是web服務中非常重要的一個部分,因為至少網(wǎng)站中大多數(shù)圖形都是靜態(tài)的,而且還有很多html文件時靜態(tài)的。一個常規(guī)的web服務器對于靜態(tài)頁面的http請求處理非常簡單,僅僅是拷貝"文件到網(wǎng)絡"的簡單操作。如果這些操作在內(nèi)核中完成將變得非常高效。例如也是完成類似的功能的NFS服務器也是運行在內(nèi)核中的。

通過在內(nèi)核中實現(xiàn)web請求處理加速,通常意義的web服務器-如apache等則可以專注于處理那些動態(tài)web請求。

注:這里Apache指代任何一個web服務器。

二、快速入門

???1) 編譯并加載模塊
???2) 如果需要,通過/proc/sys/net/khttpd來對模塊進行配置
???3) echo 1 > /proc/sys/net/khttpd/start

???卸載:
?
???echo 1 > /proc/sys/net/khttpd/stop
???echo 1 > /proc/sys/net/khttpd/unload
???rmmod khttpd

三、配置

1、操作模式
???
???這里有兩種推薦操作模式:

???1) "Apache" 是主web服務器,kHTTPd是輔助web服務器
???
??clientport -> 80
??serverport -> 8080 (or whatever)

???2) kHTTPd是主web服務器, "Apache"是輔助web服務器
??clientport -> 8080 (or whatever)
??serverport -> 80

2、配置kHTTPd
???
???在啟動kHTTPd之前首先需要對它進行配置。這是通過/proc文件系統(tǒng)來進行的,因此可以在腳本中實現(xiàn)自動配置。大多數(shù)參數(shù)只能在kHTTPd沒有啟動以前才能設(shè)置。
???
一般可以配置以下參數(shù):

???1) kHTTPd監(jiān)聽的服務請求端口
???2) "Apache"監(jiān)聽的端口(在"localhost"接口中)
???3) web文檔root目錄(documentroot)
???4) 動態(tài)內(nèi)容的請求所包含的字符串(可選的)
[ 默認包括"cgi-bin"]

???在這里指定的documentroot一定要保證和運行在用戶空間的web服務器的documentroot相一致,因為kHTTPd可能會將任何請求重定向給用戶空間的web服務器來處理。
???
一個典型的腳本(第一種操作模式)

#!/bin/sh
modprobe khttpd
echo 80 > /proc/sys/net/khttpd/clientport
echo 8080 > /proc/sys/net/khttpd/serverport
echo /var/www > /proc/sys/net/khttpd/documentroot
echo php3 > /proc/sys/net/khttpd/dynamic
echo shtml > /proc/sys/net/khttpd/dynamic
echo 1 > /proc/sys/net/khttpd/start

對于第二種操作模式,其典型的腳本如下:

#!/bin/sh
modprobe khttpd
echo 8080 > /proc/sys/net/khttpd/clientport
echo 80 > /proc/sys/net/khttpd/serverport
echo /var/www > /proc/sys/net/khttpd/documentroot
echo php3 > /proc/sys/net/khttpd/dynamic
echo shtml > /proc/sys/net/khttpd/dynamic
echo 1 > /proc/sys/net/khttpd/start

???在這種情況下,你首先需要修改Apache的配置:

???Port 80

???修改為

???Port 8080

3、停止kHTTPd

為了修改配置,首先需要停止kHTTPd:

???#echo 1 > /proc/sys/net/khttpd/stop
???
如果希望卸載模塊,停止kHTTPd以后,運行:

???echo 1 > /proc/sys/net/khttpd/unload

???如果你感覺對你來說這個過程太慢了(上面的命令需要等待遠程連接首先關(guān)閉),可以在停止其停止以后向服務器發(fā)送HUP信號,這將導致服務器線程立即停止。
???
???注:如果這些進程沒有被停止,它們會馬上重新啟動。

四、 限制

kHTTPd的安全模式非常嚴格,這是因為有用戶空間的web服務器可以處理復雜的情況:

???kHTTPd只有在滿足下面的條件才會處理請求:
???
??1) URL中沒有"?"
??2) URL以"/"開始
??3) URL指定的文件存在
??4) 該文件的權(quán)限是所有用戶可讀的(*)
??5) 文件不是一個目錄,不是可執(zhí)行文件,沒有sticky位置位(*)
??6) URL不包含任何非法子串,如:".."、"cgi-bin"等(*)
??7) 文件的mime類型是可知的(*)

???這里后面標注*的條件是可以通過/proc/sys/net/khttpd來配置的

???不滿足上面任何條件的請求將被轉(zhuǎn)交給用戶空間的web服務器來處理。,

五、參數(shù)

???下面的參數(shù)可以通過/proc/sys/net/khttpd被配置:
?
??變量名 默認值 含義

??serverport 8080 kHTTPd監(jiān)聽的服務端口

??clientport 80 用戶空間的web服務器的監(jiān)聽端口

??threads 2 服務器線程的數(shù)量,對于小型web來說應該是每個CPU對應一個,對于大型網(wǎng)站來說(活動文件不是保存在RAM中),其值應該是每個CPU對應2

??documentroot /var/www web內(nèi)容所在目錄
??
??start 0 設(shè)置為1來啟動kHTTPd (該位可能被"stop"自動設(shè)置為0)

??stop 0 設(shè)置為1來停止kHTTPd (該位可能被"start"自動設(shè)置為0)

??unload 0 設(shè)置為1來準備卸載kHTTPd模塊

??sloppymime 0 如果為1,那么為止的mime類型自動設(shè)置為text/html,如果為0則未知mimi類型的文件將由用戶空間的web服務器來處理

??perm_required S_IROTH 需要的最小限制(其值參考"man 2 stat")
??
??perm_forbid dir+sticky+ 文件禁止的限制掩碼(其值參考"man 2 stat")

??dynamic cgi-bin .. 動態(tài)內(nèi)容請求URL包含的子串

??maxconnect 1000 當前最大連接數(shù)

關(guān)鍵詞標簽:服務,加速,實現(xiàn),通過,

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 ISAPI Rewrite實現(xiàn)IIS圖片防盜鏈 ISAPI Rewrite實現(xiàn)IIS圖片防盜鏈 IIS6.0下配置MySQL+PHP5+Zend+phpMyAdmin IIS6.0下配置MySQL+PHP5+Zend+phpMyAdmin 在Windows服務器上快速架設(shè)視頻編解碼器全攻略 在Windows服務器上快速架設(shè)視頻編解碼器全攻略 win2000server IIS和tomcat5多站點配置 win2000server IIS和tomcat5多站點配置

相關(guān)下載

    人氣排行 XAMPP配置出現(xiàn)403錯誤“Access forbidden!”的解決辦法 WIN2003 IIS6.0+PHP+ASP+MYSQL優(yōu)化配置 訪問網(wǎng)站403錯誤 Forbidden解決方法 如何從最大用戶并發(fā)數(shù)推算出系統(tǒng)最大用戶數(shù) Server Application Unavailable的解決辦法 報錯“HTTP/1.1 400 Bad Request”的處理方法 Windows Server 2003的Web接口 http 500內(nèi)部服務器錯誤的解決辦法(windows xp + IIS5.0)