nginx替換ssl證書(shū) 要重啟嗎 nginx重要嗎?
nginx重要嗎?nginx的很合適這一點(diǎn),而且它提供給了方便些御載并發(fā),服務(wù)器延遲一次性處理,SSL(安全套接字層),靜態(tài)內(nèi)容,高壓縮和緩存,連接上和幫忙限制,甚至還充斥應(yīng)用程序的HTTP媒體流所需
nginx重要嗎?
nginx的很合適這一點(diǎn),而且它提供給了方便些御載并發(fā),服務(wù)器延遲一次性處理,SSL(安全套接字層),靜態(tài)內(nèi)容,高壓縮和緩存,連接上和幫忙限制,甚至還充斥應(yīng)用程序的HTTP媒體流所需的最關(guān)鍵功能層到更快速有效的邊緣Web服務(wù)器層。它還容許真接與memcached/Redis或其他“NoSQL”解決方案獨(dú)立顯卡,以在為大量并發(fā)用戶提供服務(wù)時(shí)想提高性能。
緊接著最近開(kāi)發(fā)套件和編程語(yǔ)言的越來(lái)越廣泛使用,越來(lái)越多的公司正準(zhǔn)備轉(zhuǎn)變他們的應(yīng)用程序開(kāi)發(fā)和部署習(xí)慣。nginx已下一界這些不斷變化的范例中最不重要的組成部分之一,它也指導(dǎo)許多公司在預(yù)算范圍內(nèi)快速啟動(dòng)和旗下其Web服務(wù)。
nginx的第一行是在2002年匯編語(yǔ)言的。2004年,它依據(jù)雙條款BSD許可證向公眾公告。從那個(gè)時(shí)候起,nginx用戶的數(shù)量始終在會(huì)增長(zhǎng),能提供想法,并再提交對(duì)整個(gè)社區(qū)相當(dāng)有幫助和有益的出現(xiàn)錯(cuò)誤報(bào)告,建議和觀察。
nginx代碼庫(kù)是偽原創(chuàng)的,全部是用C編程語(yǔ)言從新開(kāi)始c語(yǔ)言程序的。nginx已被移植到到許多架構(gòu)和操作系統(tǒng),除了Linux,F(xiàn)reeBSD,Solaris,Mac OS X,AIX和Microsoft Windows。nginx有自己的庫(kù),其標(biāo)準(zhǔn)模塊除此之外zlib,PCRE和OpenSSL之外應(yīng)該不會(huì)超出系統(tǒng)的C庫(kù),除非pcre,PCRE和OpenSSL可以不你選擇從統(tǒng)合中可以排除,如果沒(méi)有不需要或是導(dǎo)致潛在動(dòng)機(jī)的許可證。
haproxy和nginx的區(qū)別?
Nginx跟Haproxy反正他們兩個(gè)的定位是有所有所不同的,Nginx的定位是一個(gè)server,Haproxy的定位是一個(gè)loadbalancer。
Nginx按照各種pluginmodule是可以支持Loadbalance的功能,不過(guò)性能不弱于haproxy太,所以才總有人拿來(lái)將兩個(gè)東西比較好。當(dāng)然Apache也也可以相關(guān)模塊做loadbalancer,但是性能差得多而己所以我沒(méi)人用而己。當(dāng)然了Nginx的LB功能現(xiàn)在是其支柱挺火功能罷了。
看見(jiàn)了有很多答案對(duì)于haproxy多進(jìn)程有誤解,這里特別說(shuō)下,haproxy已經(jīng)支持什么多進(jìn)程模型,只不過(guò)并也不是Nginx的WorkerMaster結(jié)構(gòu),完全是平等多進(jìn)程結(jié)構(gòu),而也意見(jiàn)REUSEPORT選項(xiàng),因?yàn)樵谶@里Nginx跟Haproxy這對(duì)多核用來(lái)上都是完全不一樣的并沒(méi)有本質(zhì)區(qū)別。
haproxy從1.8之后,直接添加了多線程的模式,現(xiàn)在它更幫我推薦的又是這個(gè)模型,在一些平臺(tái)上能要好的利用多核。而Nginx向來(lái)沒(méi)有多線程模型。不過(guò)看起來(lái)社區(qū)也沒(méi)準(zhǔn)備支持。
Nginx其實(shí)實(shí)現(xiàn)server的功能來(lái)說(shuō),是Haproxy不擁有的,讓Haproxy像一個(gè)大多數(shù)Webserver那樣解除一個(gè)普通的HTTP請(qǐng)求是不是那么容易的,不如此大規(guī)模如何修改源碼根本不能做到。Haproxy是在虛空中微博轉(zhuǎn)發(fā)模型設(shè)計(jì)的,整個(gè)流程就是環(huán)繞如何能急速把一個(gè)請(qǐng)求也可以知道回答轉(zhuǎn)發(fā)到另一端。并不是像Server差不多認(rèn)可請(qǐng)求然后再發(fā)。
但Nginx才是一個(gè)完全是的LB來(lái)說(shuō),尤其是因?yàn)閃ebLoadBalancer來(lái)說(shuō),功能沒(méi)有haproxy這樣的話極細(xì)致。Haproxy意見(jiàn)的ACL對(duì)象太廣泛的,很多情況卻不是必須腳本前期就可以不能夠完成復(fù)雜的功能,而Nginx有一點(diǎn)奇怪的LoadBalance功能都要在用腳本才能成功,那樣性能變會(huì)差很多。
從功能角度過(guò)來(lái)講,Nginx不過(guò)功能比Haproxy要多(不過(guò)并不都是付費(fèi)的),而且他的開(kāi)發(fā)社區(qū)和定位方向都比Haproxy要大和涵蓋面。在Nginx上面的各種解決方案也要多的多。例如WAF,haproxy一致都沒(méi)有都很好的原生解決方案。有除開(kāi)最近針對(duì)Service Mesh的支持,haproxy是很容易跟得上。
但基礎(chǔ)功能,和HTTP2,TLS1.3,Script,SSL/TLSoffload,ocsp,SNIpreload,總之zookeeper2011版版本巳經(jīng)巳經(jīng)支持,甚至連比Nginx還更快些(HTTP2比較晚,但是現(xiàn)在也允許了)。至于,麻煩問(wèn)下硬件SSLoffload接受不過(guò)主要是OpenSSL的engine的支持,所以才這個(gè)大家都差不多,如果兼容比較新OpenSSL都沒(méi)什么問(wèn)題。
Haproxy的優(yōu)點(diǎn)不過(guò)是轉(zhuǎn)發(fā)性能稍高,因?yàn)閔aproxy去追求zero全部復(fù)制的forward流程,所以代碼都被害妄想于優(yōu)化在一。但這個(gè)優(yōu)勢(shì)現(xiàn)在被廣泛的的TLS/SSL應(yīng)用鋪平了,差別不大0copy節(jié)省時(shí)間的時(shí)間來(lái)說(shuō)加解密的消耗的性能占絕大多數(shù),因此ngnix基本上在現(xiàn)在的應(yīng)用廣泛SSL環(huán)境下沒(méi)有什么優(yōu)勢(shì)了。除非你想用純HTTP,不過(guò)還想在用比較奇怪的基于HTTP頭部的LoadBalance功能,這樣的話Haproxy是個(gè)好選擇,要不然僅僅只不過(guò)是LB的話,LVS性能反正更最高,要知道人家在Kernel里面。
從代碼層面來(lái)說(shuō),Nginx的結(jié)構(gòu)化代碼和模塊化都比Haproxy好過(guò)多。Haproxy代碼模塊化一直都是個(gè)大問(wèn)題,內(nèi)部結(jié)構(gòu)模塊化不繼,二次開(kāi)發(fā)困難,最近到1.9了才些會(huì)改善,但依然有很多內(nèi)部trick的hack和讓人發(fā)懵的FLAG。而言Nginx做到的徹底的模塊化,這個(gè)可以輕而易舉的通過(guò)旗下自己的模塊來(lái)變化或則實(shí)現(xiàn)方法查找功能,這個(gè)haproxy是不必須具備的。
從開(kāi)發(fā)社區(qū)來(lái)說(shuō),Nginx也比Haproxy好太,Haproxy只不過(guò)社區(qū)歷史更久,不過(guò)總是大都戲比人紅,貢獻(xiàn)者畢竟原作者的嚴(yán)格的的控制,始終都一般很少,再另外沒(méi)有module開(kāi)發(fā)功能,所以才讓的開(kāi)發(fā)者一直都不太多。給了的問(wèn)題就是版本更新慢,支持什么的新功能慢。HTTP2的開(kāi)發(fā)幾乎靠原作者一個(gè)人,因?yàn)橐庖?jiàn)進(jìn)度極為嚴(yán)重拖后。
這篇文章看上去像是變成了對(duì)haproxy吐槽一下,可是而且在工作中接觸這兩個(gè)東西真的過(guò)多,但是接受深度適宜二次開(kāi)發(fā),因此自如果說(shuō)應(yīng)該有一定會(huì)的了解的。從目前的情況看,要是haproxy不能不能更剛剛開(kāi)放招募更多的貢獻(xiàn)者,又不能完全如何修改架構(gòu)支持module開(kāi)發(fā),是不能比擬NGINX的。
至于Haproxy優(yōu)勢(shì)一點(diǎn)的是免費(fèi)版的功能比Nginx免費(fèi)版的更實(shí)惠。相對(duì)于小又窮的站點(diǎn)雖然是個(gè)好處。