Apache是否優於Nginx?

最近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是世界上最好的語言」的無關回答的現象?

TAG:PHP | 伺服器 | 計算機網路 | Nginx | Apache |