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