Apache是否優於Nginx?
01-16
最近Nginx總是502,想改成Apache。
Apache是否優於Nginx ?這個沒有誰比誰優秀,只有找到合適自己的才是最好的,出現502錯誤,先從伺服器著手查找原因,再從所使用的軟體著手,祝好運。
沒有誰優於誰,都有各自的長處和短板。
Apache是這個稱呼不對,準確的說應該是Apache httpd,因為Apache是一個軟體基金會,下面有無數的產品。Httpd是老牌的Web Server,LAMP裡面,A就是代表它,儘管現在因為有了Nginx所以誕生了的LNMP。httpd的老牌就意味著它誕生的時代比較久遠,在當時互聯網服務還比較簡單,都集中在靜態頁面和並不算豐富的動態交互,憑藉著出色的設計和強大的社區(這是重點)使其成為首選伺服器。但是隨著網路的不斷發展,高並發的需求開始顯現,httpd的負載能力就備受考驗,而它之所以低效,也是由於架構設計之初並沒有預料到這樣的情況,採用了傳統的select模型,導致現在已經積重難返,重新設計無異於脫胎換骨。
後期之秀Nginx則是順應互聯網發展所誕生的輕量的server,它採用的是全新的網路架構epoll和kqueue模型,在高並發方面基本上甩Apache幾條街。但它也存在不足,至少就功能的豐富程度顯然還是比不上Apache,儘管現在社區也很火熱,但也只是近幾年才逐漸被大家認識和接受,並且它並不是萬能到可以解決所有問題的。
如何選用它們?
假設你用的是PHP,似乎也只有PHP和這倆是黃金搭檔,如果是Java,自然就用tomcat了,所以我們認為你是在使用PHP。PHP有幾種方式和web server整合起來,module(apache的模塊),cgi模式,fastcgi模式(更高效的cgi)。從實際運行效果來看,fastcgi是最優選擇。就配置而言,Apache要配置fastcgi很麻煩,而且由於fastcgi的特點,使用Apache來做代理顯然不是什麼上選,哪怕你用lighthttpd之類的,也都優於Apache。而Nginx則是極佳的反向代理伺服器,它和fastcgi是很好的組合。
如此一來,結果顯而易見,那就是Nginx秒掉了Apache。所以似乎又打擊題主了。
最後,還是匿了吧,技術問題一個回答錯誤就要被噴啊,低調,低調。電動車是否優於摩托車
最近nginx呈愈演愈烈之勢。
如果單純是這個問題,不建議更換,應該找到問題的根源予以解決。當前nginx的流行程度已經很高,很多大型網站都有使用,我們公司的項目都是nginx作為webserver,不存在這類問題。nginx出現502應該查找是否網站程序或者配置問題,換成apache不一定能解決你的問題。
- php-fpm配置進程數或其他資源是否足夠
- 檢查PHP程序,fpm進程有沒有被跑死的可能,有沒有超越配置所限的資源配額
- ……
Nginx可以和apache一起用的。nginx是通過fastcgi調用php-fpm來執行php,動態頁面如何都和他沒關係。
匿名兄弟回答:「Apache是這個稱呼不對,準確的說應該是Apache httpd……」。 其實,連apache網站都存在這個情況。例如官網QA頁面「What is Apache?」說的就是httpd. http://wiki.apache.org/httpd/FAQ#What_is_Apache.3F其實這是舊名稱的延續。十年前,我使用時記得還叫apache. 大概後來項目多了,為了避免混淆。就開始刻意區分了。
這裡有篇經典的帖子,可以看看:http://blog.s135.com/nginx_php_v6/ 個人感覺nginx是新潮,儘管apache httpd佔用了很大的市場,但nginx憑著其高並發處理的優勢會得很很多人的青睞.而且它還是輕量級的,這點也很吸引人. 騰訊的weiyun就用的就是nginx伺服器.
nginx和apache 都是web server ,關於你說的nginx 出現502錯誤,我認為是你的配置問題,nginx 在國內大型的網站上應用的還是非常多的,特點是處理靜態文件效率高。
各有所長。我覺得Nginx更cool一些。
推薦閱讀:
※為什麼shopex和ecshop都停止更新了?
※什麼是php單例模式?
※LNMP 教程有哪些值得推薦?
※php為什麼要設計成單線程語言?
※如何評價知乎幾乎所有PHP相關問題中都出現「PHP是世界上最好的語言」的無關回答的現象?