更新時(shí)間:2020-12-04 17:49:09 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽6389次
很多人都知道Web Server,但說(shuō)到HTTP Server卻很少有人知道,那么HTTP Server是什么呢?一般來(lái)說(shuō),HTTP Server 也是我們常說(shuō)的Web服務(wù)器,大名鼎鼎的 Apache,還有微軟的 IIS (Internet Information Server),開源領(lǐng)域的有 Lighttpd 和最近風(fēng)頭正勁的 Nginx 都是典型的Web服務(wù)器。
HttpServer類實(shí)現(xiàn)一個(gè)簡(jiǎn)單的HTTP服務(wù)器。HttpServer綁定到IP地址和端口號(hào),并偵聽此地址上來(lái)自客戶端的傳入TCP連接。該子類HttpsServer實(shí)現(xiàn)了一個(gè)處理HTTPS請(qǐng)求的服務(wù)器。Web服務(wù)器傳送(serves)頁(yè)面使瀏覽器可以瀏覽,然而服務(wù)器提供的是客戶端應(yīng)用程序可以調(diào)用(call)的方法(methods)。確切一點(diǎn),你可以說(shuō):Web服務(wù)器專門處理HTTP請(qǐng)求。
一個(gè)或多個(gè)HttpHandler對(duì)象必須與服務(wù)器關(guān)聯(lián)才能處理請(qǐng)求。每個(gè)此類HttpHandler都注冊(cè)有一個(gè)根URI路徑,該路徑表示應(yīng)用程序或服務(wù)在此服務(wù)器上的位置。處理程序到HttpServer的映射由HttpContext對(duì)象封裝。HttpContext是通過(guò)調(diào)用創(chuàng)建的createContext(String,HttpHandler)。找不到任何處理程序的任何請(qǐng)求都會(huì)被404響應(yīng)拒絕。通過(guò)提供對(duì)象,可以在該對(duì)象外部進(jìn)行線程管理 Executor。如果未提供,則使用默認(rèn)實(shí)現(xiàn)。
下面是有 Node.js 寫的一個(gè)最簡(jiǎn)單的 HTTP server// 文件名 index.js
// 使用 node index.js 可運(yùn)行本程序
var http = require('http')
var server = http.createServer( function (request, response){
response.end('這是頁(yè)面內(nèi)容,你請(qǐng)求的路徑是:' + request.url)
})
server.listen(8080, function(){
console.log("正在監(jiān)聽 %s 端口", 8080);
});
你不用看懂這段程序,你只需要知道兩件事情:
1. 這段程序監(jiān)聽了當(dāng)前機(jī)器的 8080 端口。
2. 一旦外部訪問(wèn)當(dāng)前機(jī)器的 8080 端口,這段程序就會(huì)返回一段文字。
這就是一個(gè)最簡(jiǎn)單的 HTTP server。
提供 HTTP 服務(wù)的 server 分為兩類。
1. 靜態(tài)文件服務(wù)器這種服務(wù)器簡(jiǎn)單地根據(jù)訪問(wèn)路徑,返回對(duì)應(yīng)的文件。比如用戶訪問(wèn) http:// 123.123.123.123:8080/a/b/c/d.html,那么這種服務(wù)器就會(huì)在網(wǎng)站根目錄找到 a/b/c/d.html 文件,原樣返回給用戶。
2. 動(dòng)態(tài)內(nèi)容服務(wù)器這種服務(wù)器返回的內(nèi)容一般不是文件,而是動(dòng)態(tài)生成的字符串(比如從數(shù)據(jù)庫(kù)中獲取的字符串)。比如用戶訪問(wèn) http:// http://weibo.com/home,那么這種 http://weibo.com 的服務(wù)器則會(huì)返回當(dāng)前用戶最新的微博消息。顯然每個(gè)用戶得到的內(nèi)容是不一樣的。
Web服務(wù)器可以解析(handles)HTTP協(xié)議。當(dāng)Web服務(wù)器接收到一個(gè)HTTP請(qǐng)求(request),會(huì)返回一個(gè)HTTP響應(yīng)(response),例如送回一個(gè)HTML頁(yè)面。為了處理一個(gè)請(qǐng)求(request),Web服務(wù)器可以響應(yīng)(response)一個(gè)靜態(tài)頁(yè)面或圖片,進(jìn)行頁(yè)面跳轉(zhuǎn)(redirect),或者把動(dòng)態(tài)響應(yīng)(dynamic response)的產(chǎn)生委托(delegate)給一些其它的程序例如CGI腳本,JSP(JavaServer Pages)腳本,servlets,ASP(Active Server Pages)腳本,服務(wù)器端(server-side)JavaScript,或者一些其它的服務(wù)器端(server-side)技術(shù)。無(wú)論它們(譯者注:腳本)的目的如何,這些服務(wù)器端(server-side)的程序通常產(chǎn)生一個(gè)HTML的響應(yīng)(response)來(lái)讓瀏覽器可以瀏覽。
講到這里,對(duì)于HTTP Server是什么的問(wèn)題就相當(dāng)明朗了,HTTP Server實(shí)際上就是Web服務(wù)器,HTTP Server的由來(lái)實(shí)際上是因?yàn)閃eb服務(wù)器可以解析(handles)HTTP協(xié)議。想深入學(xué)習(xí)Web服務(wù)器的小伙伴可以觀看本站的Tomcat服務(wù)器教程,里面對(duì)Apache和 IIS都有很詳細(xì)的介紹。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743