① 為什麼要使用nginx伺服器
這里做了些基準測試表明nginx打敗了其它的輕量級的web伺服器和代理伺服器,同樣也贏了相對不是那麼輕量級的產品。
有人說這些基準測試是不準確的,因為在這樣那樣的環境下,做的比較不一致。我傾向同意基準測試只是告訴了我們其中一部分情況,你能做的是消除偏見(有人見過所有人都同意一個基準測試是公平的嗎?我是沒見過。)
不管怎樣,這篇文章不是做基準測試來讓人們爭論(如果你喜歡,可以在Google上找到那樣的文章),相反,下面的引述來自人們在現實世界中使用Nginx,在真實的負載下,服務於真正的應用和網站。
引述
我們投資的一些公司把web平台切換到Nginx後,可以顯著的解決擴展問題。Nginx明顯有效的實現了今天互聯網上最大網站數量的增長。
– Thomas Gieselmann, BV Capital.
我
對今天運行網站的所有人的建議是,想打破性能限制就研究下能否使用Nginx。CloudFlare去年在一個相對較小的基礎設施上已經擴展到可以處理每
月超過150億的瀏覽量,很大程度上是因為Nginx的擴展性。我的經驗表明切換到Nginx可以最大限度的利用現代的操作系統和現有的硬體資源。
– Matthew Prince, CloudFlare的聯合創始人和CEO
Apache和Nginx都有能力提供每秒鍾龐大的請求服務,但是隨著並發數量的增加,Apache的性能開始下降,然而Nginx的性能幾乎不會下降。
這里最好的一點是:因為Nginx是基於事件的,它不用為每個請求產生新的進程或線程,所以它的內存使用很低。在我的基準測試中,它的內存使用坐落在2.5M,Apache使用得更多。
– WebFaction
針
對Nginx v0.5.22 and Apache
v2.2.8我用ab(Apache的基準測試工具)跑了一個簡單的測試。在測試過程中,我用vmstat和top檢測系統。結果表明在提供靜態內容
時,Nginx做得比Apache好。兩個伺服器都在並發數100時表現最佳。Apache使用4個工作進程(線程模式),30%的CPU和17MB的內
存,每秒鍾處理6,500次請求。Nginx使用一個工作進程,15%的CPU,1MB內存,每秒鍾處理11,500次請求。
– linux Journal
Apache好比是微軟Word,它有100萬個選項,但是你只需要其中6個。Nginx就處理那6項任務,但處理其中5項任務時速度比Apache快50倍。
– Chris Lea
我現在使用Nginx在單一伺服器上處理每天超過數千萬(也就是每秒鍾幾百次)的反向代理HTTP請求。在負載高峰期,它消耗大約15MB的內存和10%的CPU,在我的特定配置下(FreeBSD 6)。
在同樣的負載下,Apache表現大跌(在大約使用1000個進程後,上帝知道使用了多少內存),Pound表現大跌(如此多的線程,所有的線程棧會消耗400MB以上的內存),還有Lighttpd每小時泄露20MB以上內存(使用更多CPU,但不顯著)。
– Bob Ippolito in the TurboGears mailing list, 2006-08-24
我們現在使用Nginx 0.6.29的upstream hash模塊為我們需要的Varnish代理提供靜態雜湊。我們通常處理8-9千次請求/秒,大約1.2Gb/秒數據在幾台Nginx伺服器間傳輸,而且還有很大的成長空間。
– WordPress.com
直到今天,我們一直使用Pound來解決Justin.tv 的負載均衡。它一直使用20%的CPU,在高峰期會達到80%。在極高的負載下,它偶爾會崩潰。
我們只是切換到了Nginx,負載馬上就降到了大約3%的CPU使用。我們的頁面感覺更快了,盡管這可能是我的錯覺。不僅它的配置文件格式容易理解和配置,而且還提供了完整的web伺服器功能。我們再也沒有遇到尖峰期了,而且我懷疑現有的性能會徹底打敗Pound。
– Emmett Shear
我們使用Nginx作為主要的軟體用於一個免費的託管平台,我已經在Nginx中開發了一個特定的模塊用於banner潛入和統計計算,現在我們的中央伺服器可以處理大約150-200Mbit/s高度分散的http流量(所有的文件都很小)。
我認為這是非常好的結果。因為在同樣的伺服器上面Apache不管怎麼優化,甚至都不能處理60-80Mbit/s。
– Alexey Kovyrin
前
陣子,我們把我們的前端IMAP/POP代理從perdition切換到了nginx…,現在我們又使用nginx來做前端web代理伺服器…。最終的結
果是,現在的每台前端代理伺服器可以保持超過10,000並發(IMAP, POP, Web &
SMTP)連接(其中很多還是SSL),僅僅只使用了大約10%的CPU。
– FastMail.fm blog
最近,我們的靜態內容伺服器切換到了Nginx,無疑這是這么多年來我印象最深刻的一款web伺服器。我們運行在一台配有8G內存的機器上,但是nginx進程只使用了可笑的1.4Mb。
– Philip Jacob
我們已經用nginx取代了Squid(反向代理)+Apache的方案,平均負載和CPU使用一樣降低了一半。另外我們的基準測試表明新的配置每秒鍾可以處理的請求數是舊配置的2-3倍。
– HowtoForge
我們用一些CMS系統( Wordpress, Drupal, Joomla, TYPO3等)做了基準測試,結果是Nginx提供網頁的速度比Apache快了50%,同時nginx每秒鍾處理的請求數(RPS)是Apache的177%。
② nginx伺服器有什麼作用
Nginx是俄羅斯人編寫的十分輕量級的HTTP伺服器,Nginx,它的發音為「engine X」,是一個高性能的HTTP和反向代理伺服器,同時也是一個IMAP/POP3/SMTP 代理伺服器。nginx伺服器的特點是佔有內存少,並發能力強,易於開發,部署方便。Nginx 支持多語言通用伺服器。目前Nginx 已經成為了眾多企業後台架構的核心,許多企業都將其用作承擔所有來自 Web 服務的業務流量負載,以支撐業務數以百萬級別的高並發。
③ nginx配置前端,需要幾台什麼樣的伺服器。什麼樣的系統,什麼樣的配置
兩種前端架構:
lvs -> nginx前端代理 -> squid緩存
lvs -> squid前端緩存 -> nginx中層代理
squid在前面的優點:
Squid作純代理比較穩當
前端少一級代理,響應速度會快,出問題的可能性要小
功能有限,不會常被調整
容易為人接受,只是為了擴充功能而增加中層代理
一般的配置簡便,比如增加一個二級域名,只需配置一個指向。
增加的nginx可擴展功能,增加對應用服務的負載均衡等。
squid在前面的缺點:
squid支持的負載均衡配置復雜
容災問題
更新緩存要遍歷所有機器
squid只支持單cpu,所以浪費cpu
nginx在前面的優點:
分流、負載均衡功能強大,可以細致定義
可精細定製access_log
nginx的錯誤日誌更詳細
可讓squid只緩存無壓縮版本,由nginx壓縮,這樣可優化squid緩存容量
nginx可分擔部分無實時性要求的緩存
nginx在前面的優點:
nginx目前還有部分bug。
功能強,所以可能經常被調整
nginx代理用的短鏈接方式
單機上安裝nginx+squid的cpu消耗比純squid和純nginx之和要大一倍,但也不算高
容易遭到質疑,不易被接受。
④ 搭建nginx伺服器需要什麼基礎
需要裝有windows或linux系統的物理機或虛擬機
需要有網路下載nginx文件
如果需要https,則需要域名,以及https證書
⑤ 為什麼要使用nginx伺服器
我們大多數的客戶在他們的伺服器上使用Apache作為Web伺服器,尤其是部署在一個基於PHP系統的前端並且使用mod-PHP。鑒於擴張性和性能方面的原因,我們通常會建議他們改用Nginx和FPM。
Apache是非常強大的Web伺服器,模塊化結構,也是Web服務端的鼻祖。除了捆綁一些其他的工具外,Apache已經成為了世上最廣泛部署的開源系統,直到最近,世界上大多數網站仍運行著Apache系統。
但是,Apache並不是完美的,並且不再適合大規模系統。為什麼?因為他的進程模式雖然簡單而靈活,但並不適合大規模尤其是當要處理像PHP這種需要佔用大量內存應用程序代碼時。
一個典型的網路應用伺服器由兩部分組成。客戶端連接部分負責用戶瀏覽器與HTTP連接,保持長時間的TCP/IP協議,通常是1到2分鍾。對於一個大型的系統,伺服器可能要同時承擔和處理數以萬計的並發連接。
這直接與Apache只有 500條進程即500個HTTP連接的處理能力上限相沖突。而現今的瀏覽器讓這個問題更加嚴重, 因為現在的瀏覽器平均每個主機會打開六個網站鏈接(幾年前是兩個網站鏈接)。所以當超過100個用戶同時訪問時,Apache就已經滿負荷了。
第二部分是應用程序處理部分,這部分承擔了代碼運算。在大多數系統中,這部分工作是最消耗RAM和CPU資源的,因此進程數量必須被嚴格限制,通常是大約每1GB的內存10個進程,或者每個CPU核心兩個進程。因此一台4GB RAM、16內核的伺服器最多隻能運行32個應用程序進程。
但是,問題的關鍵是,Apache直接連接前端客戶端通訊組件與後端應用程序進程組件。如此一來,前端部分往往保持長時間的連接,常常達到幾分鍾,這導致後端部分將持續消耗內存和CPU資源。目前還沒有直接的方法能夠在大型系統中找到前後端服務的平衡,因此他們必須被分離開來。
目前有兩個主要的解決方法。第一個方法,也是現有系統上最容易的方法,就是在Apache前端安裝負載均衡伺服器或者Nginx來處理客戶端連接部分。負載均衡伺服器,像HAProxy或者Nginx能輕松處理成千上萬條並發的連接,並使Apache能夠真正的僅作為後端應用程序工作,來處理32個或是更多的進程。
第二種方案,也是最通用的辦法就是用Nginx替換Apache,同時使用PHP-PFM作為應用伺服器。就像之前所提到的,這將分割前端客戶端通信部分和後端應用程序部分。Nginx處理HTTP通訊協議,同時FPM處理後端應用程序部分,和那32個進程進行交互。
然而這幾種方法仍然還存在一些問題,主要是如何載入伺服器的RPC調用,以及如何釋放已經完成的RPC調用。 這兩個問題都會在其他的博客中加以詳解。
另外,只使用Nginx的解決方法會給那些嚴重依賴於Apache功能的應用程序帶來問題,尤其是特別依賴rewrite rules, .htaccess, 或者mod_security等一些可選組件的應用程序。在這種情況下,在Apache前端增加安裝Nginx是最好的方法。
通常來說,所有新的系統都應該使用Nginx和PHP-FPM來部署。這能提供高性能增長特性,並且是平衡用戶和內存,CPU資源的最佳選擇。已存在的系統可以在前端使用Nginx或者HAProxy以達到同樣的效果,以便在當今現代網路環境中為用戶提供更優質的服務。
⑥ Nginx 是什麼
Nginx(engine x) 是一個高性能的HTTP和反向代理伺服器,也是一個IMAP/POP3/SMTP伺服器。
Nginx是一款輕量級的Web伺服器和反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,並在一個BSD-like 協議下發行。其特點是佔有內存少,並發能力強,事實上nginx的並發能力確實在同類型的網頁伺服器中表現較好,中國大陸使用nginx網站用戶有:網路、京東、新浪、網易、騰訊、淘寶等。
伺服器是硬體(身體),NGINX是軟體(靈魂):伺服器需要NGINX APACHE 或者IIS 才能作為網站伺服器。
⑦ nginx負載均衡配置必須要有伺服器嗎
兩個VIP,我覺得沒必要,前端兩台做nginx+keepalive,只用一個VIP對外提供服務就行了,你的另一個VIP是用在什麼地方。
理論上上是的,但是為了控制腦裂的問題,我們都是檢測到有問題,就重啟那台伺服器
如果進程多的話,那麼你還不如使用curl去訪問,如果檢測到那個項目訪問不了,就重啟nginx服務,那麼就自動轉移了。
⑧ 「nginx」是什麼意思
Nginx(engine x) 是一個高性能的HTTP和反向代理web伺服器,同時也提供了IMAP/POP3/SMTP服務。Nginx是由伊戈爾·賽索耶夫為俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0發布於2004年10月4日。
其將源代碼以類BSD許可證的形式發布,因它的穩定性、豐富的功能集、簡單的配置文件和低系統資源的消耗而聞名。2011年6月1日,nginx 1.0.4發布。
反向代理的優勢:
1、加快了對內部伺服器的訪問速度
在內部伺服器前放置兩台反向代理伺服器,分別連接到教育網和公網,這樣公網用戶就可以直接通過公網線路訪問學校伺服器,從而避開了公網和教育網之間擁擠的鏈路。同時反向代理伺服器的緩存功能也加快了用戶的訪問速度。
2、節約了有限的IP資源
校園網內部伺服器除使用教育網地址外,也會採用公網的IP地址對外提供服務,公網分配的IP地址數目是有限的,如果每個伺服器有分配-個公網地址,那是不可能的,通過反向代理技術很好地解決了IP地址不足的問題。
⑨ nginx實現負載均衡至少需要幾台伺服器
1、nginx做反向代理幾台伺服器都可以用,一台也可以,具體要看你預計的業務量有多少。一台的話,就是將訪問本機80/443埠的請求轉發給本機8080埠,多台同理。
2、理論上很少直接用tomcat對外提供服務的,因為可擴展性太差。比如你單台tomcat負載太大了,就沒法直接擴展。而使用nginx的話,後端的tomcat可以很方便的做橫向擴展。
3、tomcat只適用於少量並發的環境,並且處理靜態文件的能力一般。nginx可承載較大的並發量。但具體多少並發才能看出來差距就沒有實測過了。
4、個人理解一台高配性能的伺服器應該是高於兩台中配的,因為單機中減去了網路傳輸的消耗,穩定性單機就不如兩台了,因為兩台可以做高可用。
⑩ nginx一般和什麼伺服器搭配使用
nginx網站服務一般在linux系統下使用,性能可以得到正常的發揮,在我windows下,事倍功半。
我這邊經常使用centos6.8 64位下使用nginx。nginx安裝教程如下。
yum-yinstallgccgcc-c++ncurses-devellibxml2-devel
openssl-develcurl-devellibjpeg-devellibpng-develautoconfpcre-devel
libtool-libsfreetype-develgdzlib-develzipunzip
-devel
glibc-develglibc-staticglib2-develbzip2-devel
gettext-devellibcap-devellogrotatentp
libmcrypt-develpatch------安裝nginx需要的組件
wgethttp://nginx.org/download/nginx-1.10.2.tar.gz---獲取nginx
tar-zxvf./nginx-1.10.2.tar.gz
cd./nginx-1.10.2
./configure
--with-stream--開啟nginxtcp代理服務
--with-http_ssl_mole---開啟nginxhttps服務
需要開啟那些請網路查下,一般默認就可以的
make----編譯nginx
makeinstall----安裝nginx
chkconfignginxon--開機啟動nginx