您當(dāng)前所在位置:
首頁(yè) →
服務(wù)器 →
WEB服務(wù)器 →
通過(guò)內(nèi)核httpd實(shí)現(xiàn)web服務(wù)加速
通過(guò)內(nèi)核httpd實(shí)現(xiàn)web服務(wù)加速
時(shí)間:2015-06-28 00:00:00
來(lái)源:IT貓撲網(wǎng)
作者:網(wǎng)管聯(lián)盟
我要評(píng)論(0)
- 一、簡(jiǎn)介
從linux2.4.13開(kāi)始,在Networking options出現(xiàn)了一個(gè)試驗(yàn)性的選項(xiàng)-"[ ] Kernel httpd acceleration (EXPERIMENTAL)",什么是kHTTPd呢?它是一個(gè)Linux環(huán)境下的web服務(wù)器。kHTTPd和其它web服務(wù)器的不同之處在于其是作為內(nèi)核的一部分運(yùn)行在Linux的內(nèi)核中(可以看成是一個(gè)設(shè)備驅(qū)動(dòng))。
kHTTPd僅僅處理靜態(tài)(基于靜態(tài)文件的)的web頁(yè)面,而將所有的對(duì)于非靜態(tài)內(nèi)容的請(qǐng)求傳遞給正常的運(yùn)行于用戶空間的web服務(wù)器來(lái)處理,如apache、Zeus等,而這些運(yùn)行在用戶空間的web服務(wù)器并不需要任何修改。
對(duì)于靜態(tài)web頁(yè)面的http請(qǐng)求的處理不是一個(gè)非常復(fù)雜過(guò)程,但是這卻是web服務(wù)中非常重要的一個(gè)部分,因?yàn)橹辽倬W(wǎng)站中大多數(shù)圖形都是靜態(tài)的,而且還有很多html文件時(shí)靜態(tài)的。一個(gè)常規(guī)的web服務(wù)器對(duì)于靜態(tài)頁(yè)面的http請(qǐng)求處理非常簡(jiǎn)單,僅僅是拷貝"文件到網(wǎng)絡(luò)"的簡(jiǎn)單操作。如果這些操作在內(nèi)核中完成將變得非常高效。例如也是完成類似的功能的NFS服務(wù)器也是運(yùn)行在內(nèi)核中的。
通過(guò)在內(nèi)核中實(shí)現(xiàn)web請(qǐng)求處理加速,通常意義的web服務(wù)器-如apache等則可以專注于處理那些動(dòng)態(tài)web請(qǐng)求。
注:這里Apache指代任何一個(gè)web服務(wù)器。
二、快速入門
???1) 編譯并加載模塊
???2) 如果需要,通過(guò)/proc/sys/net/khttpd來(lái)對(duì)模塊進(jìn)行配置
???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服務(wù)器,kHTTPd是輔助web服務(wù)器
???
??clientport -> 80
??serverport -> 8080 (or whatever)
???2) kHTTPd是主web服務(wù)器, "Apache"是輔助web服務(wù)器
??clientport -> 8080 (or whatever)
??serverport -> 80
2、配置kHTTPd
???
???在啟動(dòng)kHTTPd之前首先需要對(duì)它進(jìn)行配置。這是通過(guò)/proc文件系統(tǒng)來(lái)進(jìn)行的,因此可以在腳本中實(shí)現(xiàn)自動(dòng)配置。大多數(shù)參數(shù)只能在kHTTPd沒(méi)有啟動(dòng)以前才能設(shè)置。
???
一般可以配置以下參數(shù):
???1) kHTTPd監(jiān)聽(tīng)的服務(wù)請(qǐng)求端口
???2) "Apache"監(jiān)聽(tīng)的端口(在"localhost"接口中)
???3) web文檔root目錄(documentroot)
???4) 動(dòng)態(tài)內(nèi)容的請(qǐng)求所包含的字符串(可選的)
[ 默認(rèn)包括"cgi-bin"]
???在這里指定的documentroot一定要保證和運(yùn)行在用戶空間的web服務(wù)器的documentroot相一致,因?yàn)閗HTTPd可能會(huì)將任何請(qǐng)求重定向給用戶空間的web服務(wù)器來(lái)處理。
???
一個(gè)典型的腳本(第一種操作模式)
#!/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
對(duì)于第二種操作模式,其典型的腳本如下:
#!/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以后,運(yùn)行:
???echo 1 > /proc/sys/net/khttpd/unload
???如果你感覺(jué)對(duì)你來(lái)說(shuō)這個(gè)過(guò)程太慢了(上面的命令需要等待遠(yuǎn)程連接首先關(guān)閉),可以在停止其停止以后向服務(wù)器發(fā)送HUP信號(hào),這將導(dǎo)致服務(wù)器線程立即停止。
???
???注:如果這些進(jìn)程沒(méi)有被停止,它們會(huì)馬上重新啟動(dòng)。
四、 限制
kHTTPd的安全模式非常嚴(yán)格,這是因?yàn)橛杏脩艨臻g的web服務(wù)器可以處理復(fù)雜的情況:
???kHTTPd只有在滿足下面的條件才會(huì)處理請(qǐng)求:
???
??1) URL中沒(méi)有"?"
??2) URL以"/"開(kāi)始
??3) URL指定的文件存在
??4) 該文件的權(quán)限是所有用戶可讀的(*)
??5) 文件不是一個(gè)目錄,不是可執(zhí)行文件,沒(méi)有sticky位置位(*)
??6) URL不包含任何非法子串,如:".."、"cgi-bin"等(*)
??7) 文件的mime類型是可知的(*)
???這里后面標(biāo)注*的條件是可以通過(guò)/proc/sys/net/khttpd來(lái)配置的
???不滿足上面任何條件的請(qǐng)求將被轉(zhuǎn)交給用戶空間的web服務(wù)器來(lái)處理。,
五、參數(shù)
???下面的參數(shù)可以通過(guò)/proc/sys/net/khttpd被配置:
?
??變量名 默認(rèn)值 含義
??serverport 8080 kHTTPd監(jiān)聽(tīng)的服務(wù)端口
??clientport 80 用戶空間的web服務(wù)器的監(jiān)聽(tīng)端口
??threads 2 服務(wù)器線程的數(shù)量,對(duì)于小型web來(lái)說(shuō)應(yīng)該是每個(gè)CPU對(duì)應(yīng)一個(gè),對(duì)于大型網(wǎng)站來(lái)說(shuō)(活動(dòng)文件不是保存在RAM中),其值應(yīng)該是每個(gè)CPU對(duì)應(yīng)2
??documentroot /var/www web內(nèi)容所在目錄
??
??start 0 設(shè)置為1來(lái)啟動(dòng)kHTTPd (該位可能被"stop"自動(dòng)設(shè)置為0)
??stop 0 設(shè)置為1來(lái)停止kHTTPd (該位可能被"start"自動(dòng)設(shè)置為0)
??unload 0 設(shè)置為1來(lái)準(zhǔn)備卸載kHTTPd模塊
??sloppymime 0 如果為1,那么為止的mime類型自動(dòng)設(shè)置為text/html,如果為0則未知mimi類型的文件將由用戶空間的web服務(wù)器來(lái)處理
??perm_required S_IROTH 需要的最小限制(其值參考"man 2 stat")
??
??perm_forbid dir+sticky+ 文件禁止的限制掩碼(其值參考"man 2 stat")
??dynamic cgi-bin .. 動(dòng)態(tài)內(nèi)容請(qǐng)求URL包含的子串
??maxconnect 1000 當(dāng)前最大連接數(shù)關(guān)鍵詞標(biāo)簽:服務(wù),加速,實(shí)現(xiàn),通過(guò),
相關(guān)閱讀
熱門文章
ISAPI Rewrite實(shí)現(xiàn)IIS圖片防盜鏈
IIS6.0下配置MySQL+PHP5+Zend+phpMyAdmin
在Windows服務(wù)器上快速架設(shè)視頻編解碼器全攻略
win2000server IIS和tomcat5多站點(diǎn)配置
人氣排行
XAMPP配置出現(xiàn)403錯(cuò)誤“Access forbidden!”的解決辦法
WIN2003 IIS6.0+PHP+ASP+MYSQL優(yōu)化配置
訪問(wèn)網(wǎng)站403錯(cuò)誤 Forbidden解決方法
如何從最大用戶并發(fā)數(shù)推算出系統(tǒng)最大用戶數(shù)
Server Application Unavailable的解決辦法
報(bào)錯(cuò)“HTTP/1.1 400 Bad Request”的處理方法
Windows Server 2003的Web接口
http 500內(nèi)部服務(wù)器錯(cuò)誤的解決辦法(windows xp + IIS5.0)