日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WEB服务器 - Apache、Nnginx、Lighttpd的比较和择优(转)

發布時間:2023/12/4 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WEB服务器 - Apache、Nnginx、Lighttpd的比较和择优(转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Apache服務器和nginx的優缺點:?

我們之前大量使用Apache來作為HTTPServer。 Apache具有很優秀的性能,而且通過模塊可以提供各種豐富的功能。

優點:

  • 首先Apache對客戶端的響應是支持并發的?,運行httpd這個daemon進程之后,它會同時產生多個孩子進程/線程,每個孩子進程/線程分別對客戶端的請求進行響應;
  • 另外,Apache可以提供靜態和動態的服務?,例如對于PHP的解析不是通過性能較差的CGI實現的而是通過支持PHP的模塊來實現的(通常為mod_php5,或者叫做apxs2)。
  • 缺點:

  • Apache的這種Server為process-based server?,也就是基于多進程的HTTPServer,因為它需要對每個用戶請求創建一個孩子進程/線程進行響應;這樣的缺點是,如果并發的請求非常多(這在大型門戶網站是很常見的)就會需要非常多的線程,從而占用極多的系統資源CPU和內存。因此對于并發處理不是Apache的強項。
  • 解決方法:

    • 目前來說出現了另一種WebServer,在并發方面表現更加優越,叫做asynchronous servers異步服務器。最有名的為Nginx和Lighttpd。?所謂的異步服務器是事件驅動程序模式的event-driven,除了用戶的并發請求通常只需要一個單一的或者幾個線程。因此占用系統資源就非常少。這幾 種又被稱為lightweight web server。

    舉例,對于10,000的并發連接請求,nginx可能僅僅使用幾M的內存;而Apache可能需要使用幾百M的內存資源。



    實際中單一的使用

    1)關于單一使用Apache來作為HTTPServer的情況我們不用再多做介紹,非常常見的應用;

    上面我們介紹到Apache對于PHP等服務器端腳本的支持是通過自己的模塊來實現的,而且性能優越。

    ?

    2)我們同樣可以單單使用 nginx或者lighttpd來作為HTTPServer來使用。

    nginx和lighttpd和Apache類似都通過各種模塊可以對服務器的功能進行豐富的擴展,同樣都是通過conf配置文件對各種選項進行配置。

    對于PHP等,nginx和lighttpd都沒有內置的 模塊來對PHP進行支持,而是通過FastCGI來支持的。

    Lighttpd 通過模塊可以提供CGI, FastCGI和SCGI等服務,nginx則沒有自己提供處理PHP的功能,需要通過第三方的模塊來提供對PHP進行FastCGI方式的集成。

    ?

    Lighttpd vs nginx?:http://www.wikivs.com/wiki/Lighttpd_vs_nginx

    ?

    ?

    反向代理Reverse Proxy?

    1) 代理服務器的概念proxy server:?

    代理服務器
    ?的概念很容易理解,就是通常作為兩臺機器中間的機器,需要提供的功能往往有:

  • 緩存caching,
  • 安全,
  • 負載均衡load banlancing。
  • 所謂的負載均衡就是,很多機器使用一個代理的時候,代理服務器需要對各個服務器進行均衡。

    我們常見的代理是正向的代理,例如我們機房有20臺電腦要上網,現在只有一個電腦可以上網,那么可以使用這臺電腦作為代理服務器,所有通過網絡的數據傳輸 都要經過該代理服務器。
    而反向代理,是和正向代理相反的?,正向代理針對服務接收方用戶來說,反向代理或者叫做服務器端代理是針對服務器端的,意思是有多臺服務器,反向代理服務器對用戶的請求代理發送給其中的一 臺服務器進行處理。

    Proxy server?:http://en.wikipedia.org/wiki/Proxy_server

    ?

    2)?實際中對于一個大型網站,我們通常使用很多臺sever來構成一個cluster來對用戶的各種請求進行響應。因此通常需要一臺或者多臺反向代理服務器來對多臺Server進行服務。?

    這個反向代理服務器需要提供的功能一般都包括:

  • 安全方面;
  • 緩存壓縮功能;
  • 負載均衡 功能;
  • Reverse proxy?:http://en.wikipedia.org/wiki/Reverse_proxy

    (需要注意反向代理服務器和防火墻優點類似,但是防火墻一般只有安全方面的考慮,沒有緩存和負載均衡方面的功能。)

    ?

    3) 綜上,實際中Web服務器端的架構?
    通常是多臺Web服務器運行并行地提 供服務;

    同時還需要在Web服務器前段部署一臺或者多臺反向代理服務器,一方面緩存一些靜態數據,或者將Web服務器動態產生的一些內容緩存,另一方面通過負載均衡功能,可以均勻地將用戶的并發請求傳遞給多臺Web服務器進行處理。?

    這樣一方面可以大大降低后面每臺Web服務器的負擔;另一方 面可以實現多臺服務器的負載均衡。?

    ?


    nginx/lighttpd作為反向代理服務器

    nginx或lighttpd在前端作為反向代理服務器,后臺布置多臺ApacheHTTPServer:?

    • 上面說到,nginx和lighttpd的優點在于速度快,輕量級,在處理多用戶并發方面要大大優于Apache服務器。?

    ? ? ? ? ? ? ?因此我們通常可以把他們作為反向代理服務器放置到多臺的Apache Web服務器前段,來一方面緩存數據,另一方面實現多臺服務器的負載均衡。

    • 當然了Apache本身通過mod_proxy和mod_cache也可以實現反向代理和緩存功能?,但是在處理高并發方面還是無法與nginx和lighttpd這種輕量的異步模式的服務器來比較。
    • 另外,利用nginx和lighttpd的反響代理功能,我們可以通過設置其configuration文件,當客戶端請求的是靜態內容(例如一些圖片,js,html文件等)的話,直接由nginx或者 lighttpd進行響應;
    • 如果需要訪問動態內容(通常需要實時從數據庫中讀取)的話,則通過反向代理,nginx等可以將請求發送給后臺等待的Apache進行響應,然后Apache將相應的結果返回給nginx,后者再響應用戶的時候還可以進行緩存。
    • 有時候還可以使用一些緩存的工具,例如Squid。另外nginx也提供了對一些緩存功能的支持,例如memcache?等。

    因此如果從圖形來分析的話,nginx作為最前端的web cache系統,通常的架構如下:


    這個結構的優點:

  • 可以使用nginx前端進行諸多復雜的配置,這些配置從前在squid是沒法做或者做起來比較麻煩的,比如針對目錄的防盜鏈。
  • nginx前端可以直接轉發部分不需要緩存的請求。
  • 因為nginx效率高于squid,所以某些情況下可以利用nginx的緩存來減輕squid壓力。
  • 可以實現url hash等分配策略
  • 可以在最前端開啟gzip壓縮,這樣后面的squid緩存的純粹是無壓縮文檔,可以避免很多無謂的穿透。
  • 因為nginx穩定性比較高,所以lvs不需要經常調整,通過nginx調整就可以。
  • squid的文件打開數按默認的1024就綽綽有余,不過處理的請求可一個都不會少。
  • 可以啟用nginx的日志功能取代squid,這樣做實時點擊量統計時可以精確定位到url,不必要再用低效率的grep來過濾。
  • 因為nginx的負載能力高于squid,所以在用lvs分流時可以不必分得特別均衡,出現單點故障的幾率比較低。
  • ?

    nginx和squid配合搭建的web服務器前端系統架構:


    前端的lvs和squid,按照安裝方法,把epoll打開,配置文件照搬,基本上問題不多。

    這個架構和app_squid架構的區別,也是關鍵點就是:加入了一級中層代理,中層代理的好處實在太多了:

  • gzip壓縮:壓縮可以通過nginx做,這樣,后臺應用服務器不管是apache、resin、lighttpd甚至iis或其他古怪服務器,都不用考慮壓縮的功能問題。
  • 負載均衡和故障屏蔽:nginx可以作為負載均衡代理使用,并有故障屏蔽功能,這樣,根據目錄甚至一個正則表達式來制定負載均衡策略變成了小case。
  • 方便的運維管理,在各種情況下可以靈活制訂方案。
  • 權限清晰:這臺機器就是不寫程序的維護人員負責,程序員一般不需要管理這臺機器,這樣假如出現故障,很容易能找到正確的人。對于應用服務器和數據庫服務器,最好是從維護人員的視線中消失,我的目標是,這些服務只要能跑得起來就可以了,其它的事情全部可以在外部處理掉。
  • ?

    參考資料:

    http://hudeyong926.javaeye.com/blog/813141




    總結

    以上是生活随笔為你收集整理的WEB服务器 - Apache、Nnginx、Lighttpd的比较和择优(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。