HttpServer是一款基于nodejs的http服務(wù)器,簡單運行一些代碼,方便又輕便,輕松就能搞定。HttpServer又很多的參數(shù)配置,能夠滿足用戶在上面運行代碼,減輕用戶重?fù)?dān)。那么歡迎大家下載使用,希望能夠幫到大家的忙。
使用方法
HttpServer命令行參數(shù)介紹
啟動服務(wù)器:HttpServer.exe-W d:web -H index.html -P 80 -M 10000
-W:web網(wǎng)站的發(fā)布路徑,如:d:web,如果路徑中有空格,可使用雙引號。
如不指定,則會在當(dāng)前服務(wù)運行的目錄下創(chuàng)建web目錄,并以此為web網(wǎng)站目錄。
-H:web網(wǎng)站的主頁,如:index.html,
如果不指定主頁,則顯示web目錄的文件清單,可作為簡單的文件服務(wù)器使用。
-P:web服務(wù)的端口號,缺省值為80。
-M:最大并發(fā)量,缺省值為20000。
其它參數(shù)(后面不帶值,參數(shù)存在則表示容許或使用):
-AllowUpload:容許上傳
-CacheM:使用緩存(具體含義見下節(jié)的"UseCacheMem"字段)
-CacheC:使用緩存(具體含義見下節(jié)的"UseCacheClass"字段)
缺省值是指,如果該命令參數(shù)不指定,服務(wù)器使用的默認(rèn)參數(shù)。
HttpServer也可以通過配置文件進行參數(shù)設(shè)置,配置文件為HttpServer.ini。
HttpServer配置文件參數(shù)介紹
WebPath:web網(wǎng)站的發(fā)布路徑,等同于命令行參數(shù)"-W"。
HomePage:web網(wǎng)站的主頁,等同于命令行參數(shù)"-H"。
Port:web服務(wù)的端口號,等同于命令行參數(shù)"-P"。
TimeOut:超時,單位秒,缺省值為60秒。
MaxConn:最大并發(fā)數(shù),等同于命令行參數(shù)"-M",缺省值為20000。
PostDataPath:上傳數(shù)據(jù)的保存路徑,缺省值為當(dāng)前用戶的temp目錄。
1、使用場景一:用戶在上傳文件時,上傳文件保存的臨時路徑;
2、使用場景二:post請求時,如果用戶post數(shù)據(jù)過大,超過"MaxPostCacheFileSize"字段指定的閥值,則轉(zhuǎn)為文件存儲,防止內(nèi)存使用過大;
MaxPostCacheFileSize:POST請求時,接收POST數(shù)據(jù)cache緩存的最大值,如果超過該值,則將緩存轉(zhuǎn)存為文件,單位為字節(jié)BYTE;
MaxUploadFileSize:最大上傳文件尺寸,單位M字節(jié),缺省值為2G。
UseCacheMem:是否使用緩存,缺省值為0,表示不使用。如使使用緩存,則服務(wù)器會用空間換時間,預(yù)先開辟若干連續(xù)的大內(nèi)存塊,并重載malloc和free函數(shù),在預(yù)先開辟的大內(nèi)存塊中尋找可用的“碎片化”內(nèi)存,從而減少在高并發(fā)下頻繁的申請和銷毀內(nèi)存導(dǎo)致的速度變慢。
UseCacheClass:是否使用結(jié)構(gòu)體(struct/class)緩存,缺省值為0,表示不使用。如使用該值,則服務(wù)器會用空間換時間,即:根據(jù)MaxConn指定的并發(fā)數(shù),預(yù)先開辟出指定的內(nèi)存空間, 如果MaxConn為2萬,則會開辟對應(yīng)2萬個結(jié)構(gòu)體(struct/class)用于保存HTTP會話時的上下文(context)數(shù)據(jù)。同上,該值也是為了減少在高并發(fā)下頻繁的申請和銷毀內(nèi)存導(dǎo)致的速度變慢。
UseMappingFile:是否使用Mapping File方式訪問磁盤文件,缺省值為1,表示使用。
AccessControlAllowOrigin:是否容許跨域,缺省值1,表示容許。
PrintMessage:是否在控制臺輸出HTTP請求,缺省值1,表示打印輸出。
注:高并發(fā)時務(wù)必關(guān)閉控制臺輸出!!!
AllowUpload:是否容許上傳,缺省值為0,表示不容許。
AllowCacheFile:是否容許文件緩存,缺省值為1,表示容許,該值有效時,會對文件進行緩存,避免頻繁的進行磁盤文件操作。
MaxCacheFileSize:最大緩存的文件尺寸,缺省值為5(單位M),小于該值的文件會加載到內(nèi)存中,后續(xù)訪問將不再從磁盤中讀取而是直接讀內(nèi)存。
HttpServerContent-Type類型設(shè)置
通過ContentType.ini該配置文件,用戶可添加指定文件類型的Content-Type類型,當(dāng)瀏覽器從服務(wù)器讀取文件時,
服務(wù)器會根據(jù)該配置文件返回指定的Content-Type給瀏覽器。
配置格式為如下,.文件擴展名:Content-Type
.mp4:video/mp4,表示如果是mp4文件,則Content-Type為video/mp4。
.cc:text/plain,表示如果是cc文件,則content-Type為text/plain。
HttpServerCGI網(wǎng)關(guān)設(shè)置
CGI網(wǎng)關(guān)設(shè)置在CGI.xml文件中。各節(jié)點含義如下:
path:CGI網(wǎng)關(guān)文件所在的目錄,這里是全路徑,該路徑不一定在發(fā)布的web目錄下(不在web目錄下會更安全)。
timeout:執(zhí)行網(wǎng)關(guān)程序的超時,單位秒,缺省值為10秒,防止有的網(wǎng)關(guān)程序不退出,或長時間不退出。
cgi:子節(jié)點,每個cgi子節(jié)點代表一個CGI網(wǎng)關(guān)類型。
cgi/name:該CGI節(jié)點名稱,比如python,表示該CGI中的網(wǎng)關(guān)文件是python腳本。
cgi/exe:執(zhí)行該腳本的應(yīng)用程序全路徑,如:c:python25python.exe。
cgi/action:響應(yīng)配置,該節(jié)點代表一個需要處理的Http請求命令(在服務(wù)端則為一個應(yīng)用),該節(jié)點有兩個字段,如下:
cgi/action/appname:url中的請求命令(應(yīng)用名),如:python/test1.do
cgi/action/filename:處理上述請求的文件,如:test1.py,該文件必須在上述path節(jié)點指定的目錄中。
說明:當(dāng)用戶發(fā)送http://server:port/python/test1.do請求時,網(wǎng)關(guān)會執(zhí)行test1.py腳本,并將腳本執(zhí)行的結(jié)果返回給瀏覽器。
1、QUERY-SRING數(shù)據(jù)的傳遞
python/test1.do?key1=value1&key2=value2
"key1=value1&key2=value2"會通過命令行參數(shù)的方式傳遞給調(diào)用者。
python中為:sys.argv[1],詳見案例:test2.py。
2、POST-DATA數(shù)據(jù)的傳遞
POST數(shù)據(jù)的傳遞通過讀取標(biāo)準(zhǔn)的輸入獲取,python中為:sys.stdin.readline(),詳見案例:test1.py。
注意:
1、HttpServer沒有通過環(huán)境變量來傳遞QUERY-STRING;
2、CGI網(wǎng)關(guān)數(shù)據(jù)返回時,服務(wù)器會自動添加Content-Length字段(根據(jù)返回數(shù)據(jù)“rnrn”來計算HTTP響應(yīng)頭和響應(yīng)體的各自長度);
3、如果CGI網(wǎng)關(guān)返回數(shù)據(jù)中沒有"rnrn"來分割HTTP響應(yīng)頭和響應(yīng)體,則服務(wù)器會認(rèn)為響應(yīng)數(shù)據(jù)是明文,并自動添加類型為“text/plain”的響應(yīng)頭,并返回給瀏覽器;
用戶可根據(jù)需要配置多個cgi子節(jié)點,用于處理不同類型的網(wǎng)關(guān)程序(或腳本)。cgi配置的保留節(jié)點有兩個,一個是bat,一個是exe。對于windows下的bat格式腳本文件,是不需要指定執(zhí)行程序,同樣exe文件也是。
點擊此處下載,網(wǎng)關(guān)案例文件在cgi-bin目錄中
網(wǎng)關(guān)配置文件
python網(wǎng)關(guān)文件案例:
BAT批處理網(wǎng)關(guān)文件案例:
exe網(wǎng)關(guān)文件案例:
HttpServer內(nèi)置上傳接口
接口名稱:command/upload.do
使用post命令,可將文件上傳到web發(fā)布目錄。
如果要將文件上傳至web目錄的子目錄中,可通過path參數(shù)指定,如下
command/upload.do?path=subfolder,subfolder為相對于web目錄中的子目錄。