WEB服务器 - Apache、Nnginx、Lighttpd的比较和择优(转)
Apache服務(wù)器和nginx的優(yōu)缺點:?
我們之前大量使用Apache來作為HTTPServer。 Apache具有很優(yōu)秀的性能,而且通過模塊可以提供各種豐富的功能。
優(yōu)點:
缺點:
解決方法:
- 目前來說出現(xiàn)了另一種WebServer,在并發(fā)方面表現(xiàn)更加優(yōu)越,叫做asynchronous servers異步服務(wù)器。最有名的為Nginx和Lighttpd。?所謂的異步服務(wù)器是事件驅(qū)動程序模式的event-driven,除了用戶的并發(fā)請求通常只需要一個單一的或者幾個線程。因此占用系統(tǒng)資源就非常少。這幾 種又被稱為lightweight web server。
舉例,對于10,000的并發(fā)連接請求,nginx可能僅僅使用幾M的內(nèi)存;而Apache可能需要使用幾百M的內(nèi)存資源。
實際中單一的使用
1)關(guān)于單一使用Apache來作為HTTPServer的情況我們不用再多做介紹,非常常見的應(yīng)用;
上面我們介紹到Apache對于PHP等服務(wù)器端腳本的支持是通過自己的模塊來實現(xiàn)的,而且性能優(yōu)越。
?
2)我們同樣可以單單使用 nginx或者lighttpd來作為HTTPServer來使用。
nginx和lighttpd和Apache類似都通過各種模塊可以對服務(wù)器的功能進行豐富的擴展,同樣都是通過conf配置文件對各種選項進行配置。
對于PHP等,nginx和lighttpd都沒有內(nèi)置的 模塊來對PHP進行支持,而是通過FastCGI來支持的。
Lighttpd 通過模塊可以提供CGI, FastCGI和SCGI等服務(wù),nginx則沒有自己提供處理PHP的功能,需要通過第三方的模塊來提供對PHP進行FastCGI方式的集成。
?
Lighttpd vs nginx?:http://www.wikivs.com/wiki/Lighttpd_vs_nginx
?
?
反向代理Reverse Proxy?
1) 代理服務(wù)器的概念proxy server:?
代理服務(wù)器?的概念很容易理解,就是通常作為兩臺機器中間的機器,需要提供的功能往往有:
所謂的負載均衡就是,很多機器使用一個代理的時候,代理服務(wù)器需要對各個服務(wù)器進行均衡。
我們常見的代理是正向的代理,例如我們機房有20臺電腦要上網(wǎng),現(xiàn)在只有一個電腦可以上網(wǎng),那么可以使用這臺電腦作為代理服務(wù)器,所有通過網(wǎng)絡(luò)的數(shù)據(jù)傳輸 都要經(jīng)過該代理服務(wù)器。
而反向代理,是和正向代理相反的?,正向代理針對服務(wù)接收方用戶來說,反向代理或者叫做服務(wù)器端代理是針對服務(wù)器端的,意思是有多臺服務(wù)器,反向代理服務(wù)器對用戶的請求代理發(fā)送給其中的一 臺服務(wù)器進行處理。
Proxy server?:http://en.wikipedia.org/wiki/Proxy_server
?
2)?實際中對于一個大型網(wǎng)站,我們通常使用很多臺sever來構(gòu)成一個cluster來對用戶的各種請求進行響應(yīng)。因此通常需要一臺或者多臺反向代理服務(wù)器來對多臺Server進行服務(wù)。?
這個反向代理服務(wù)器需要提供的功能一般都包括:
Reverse proxy?:http://en.wikipedia.org/wiki/Reverse_proxy
(需要注意反向代理服務(wù)器和防火墻優(yōu)點類似,但是防火墻一般只有安全方面的考慮,沒有緩存和負載均衡方面的功能。)
?
3) 綜上,實際中Web服務(wù)器端的架構(gòu)?
通常是多臺Web服務(wù)器運行并行地提 供服務(wù);
同時還需要在Web服務(wù)器前段部署一臺或者多臺反向代理服務(wù)器,一方面緩存一些靜態(tài)數(shù)據(jù),或者將Web服務(wù)器動態(tài)產(chǎn)生的一些內(nèi)容緩存,另一方面通過負載均衡功能,可以均勻地將用戶的并發(fā)請求傳遞給多臺Web服務(wù)器進行處理。?
這樣一方面可以大大降低后面每臺Web服務(wù)器的負擔;另一方 面可以實現(xiàn)多臺服務(wù)器的負載均衡。?
?
nginx/lighttpd作為反向代理服務(wù)器
nginx或lighttpd在前端作為反向代理服務(wù)器,后臺布置多臺ApacheHTTPServer:?
- 上面說到,nginx和lighttpd的優(yōu)點在于速度快,輕量級,在處理多用戶并發(fā)方面要大大優(yōu)于Apache服務(wù)器。?
? ? ? ? ? ? ?因此我們通常可以把他們作為反向代理服務(wù)器放置到多臺的Apache Web服務(wù)器前段,來一方面緩存數(shù)據(jù),另一方面實現(xiàn)多臺服務(wù)器的負載均衡。
- 當然了Apache本身通過mod_proxy和mod_cache也可以實現(xiàn)反向代理和緩存功能?,但是在處理高并發(fā)方面還是無法與nginx和lighttpd這種輕量的異步模式的服務(wù)器來比較。
- 另外,利用nginx和lighttpd的反響代理功能,我們可以通過設(shè)置其configuration文件,當客戶端請求的是靜態(tài)內(nèi)容(例如一些圖片,js,html文件等)的話,直接由nginx或者 lighttpd進行響應(yīng);
- 如果需要訪問動態(tài)內(nèi)容(通常需要實時從數(shù)據(jù)庫中讀取)的話,則通過反向代理,nginx等可以將請求發(fā)送給后臺等待的Apache進行響應(yīng),然后Apache將相應(yīng)的結(jié)果返回給nginx,后者再響應(yīng)用戶的時候還可以進行緩存。
- 有時候還可以使用一些緩存的工具,例如Squid。另外nginx也提供了對一些緩存功能的支持,例如memcache?等。
因此如果從圖形來分析的話,nginx作為最前端的web cache系統(tǒng),通常的架構(gòu)如下:
這個結(jié)構(gòu)的優(yōu)點:
?
nginx和squid配合搭建的web服務(wù)器前端系統(tǒng)架構(gòu):
前端的lvs和squid,按照安裝方法,把epoll打開,配置文件照搬,基本上問題不多。
這個架構(gòu)和app_squid架構(gòu)的區(qū)別,也是關(guān)鍵點就是:加入了一級中層代理,中層代理的好處實在太多了:
?
參考資料:
http://hudeyong926.javaeye.com/blog/813141
總結(jié)
以上是生活随笔為你收集整理的WEB服务器 - Apache、Nnginx、Lighttpd的比较和择优(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Struts2内置拦截器和自定义拦截器
- 下一篇: Android之Android Stud