iT邦幫忙

0

Apache vs. Nginx,究竟哪一個比較好

最近常看人在推薦Nginx,不知道它和Apache之間,有什麼樣的優缺點差異?

有人在使用Nginx嗎?為什麼選擇使用它而不是Apaceh呢?

18
bizpro
iT邦大師 1 級 ‧ 2013-06-21 16:49:51
最佳解答

如果是在Windows平台, Nginx和Apache沒有太大的差異, 而IIS 7之後, 因為部份運作移入Windows內核, 效能並不比Nginx/Apache差.

如果是Linux/BSD, Nginx善用了異步I/O模式epoll(linux)或kqueue(BSD), 而Apache用的是select程序處理機制, 簡單的說, 團體旅遊會由導遊拿所有人的護照去辦Check-in, 而個人旅遊就要依照飯店的處理程序一個一個check-in. 想想一個場景, 如果有1000個人同時拿護照要去check-in, 要有多大的大廳呢? 但是導遊只需一個就可以了. 這也是說, Nginx消耗的資源少, 處理快.

epoll/Kqueue本來就是取代select和poll的, Apache能不能用epoll? 由於select是Apache的歷史包袱, 要改變, 就會形成不相容的問題, 要改成epoll, 也許是Apache 3.0吧?

看更多先前的回應...收起先前的回應...
bizpro iT邦大師 1 級 ‧ 2013-06-21 16:54:56 檢舉

最近常看人在推薦Nginx,不知道它和Apache之間,有什麼樣的優缺點差異?

單單epoll/Kqueue就讓Nginx贏了. Apache用的人多, 文件多是最大的優點.

有人在使用Nginx嗎?為什麼選擇使用它而不是Apaceh呢?

初期用心研究後, Nginx是簡單易用又強大.

wiseguy iT邦超人 1 級 ‧ 2013-06-21 17:05:19 檢舉

不用等 3.0,Apache 2.4 的 event mpm 已經是 Epoll/Kqueue 的實現了。

bizpro iT邦大師 1 級 ‧ 2013-06-21 18:12:31 檢舉

我聽說是這樣, 但是我用Nginx用得好好的, 因此對Apache 2.4也沒有興趣.

bizpro iT邦大師 1 級 ‧ 2013-06-21 18:17:10 檢舉

我剛查了一下, 即使Apache 2.4可以啟用epoll, 但是效能還是比nginx差很多.

fillano iT邦超人 1 級 ‧ 2013-06-23 11:03:25 檢舉

其實winnt mpm很早就使用IOCP了...不過效果嘛...

4
zuyan
iT邦好手 1 級 ‧ 2013-06-22 07:00:11

沒有好不好...只有合不合適...

就看程式用在那裡

當然超大流量的一定要選 ... Nginx
一般的當然就 apache

不然讓你找BUG找不完..兩個還是有小差異的

bizpro iT邦大師 1 級 ‧ 2013-06-22 14:37:04 檢舉

zuyan提到:
當然超大流量的一定要選 ... Nginx
一般的當然就 apache

既然Nginx可以處理大流量, 何不用一套就好了? 這也是我一開始就用Nginx的原因.
這幾個月來, 看到太多的網站改用Nginx了.

ted99tw iT邦高手 1 級 ‧ 2013-06-22 15:23:00 檢舉

zuyan提到:
超大流量的一定要選 ...

大禹治水公司..絕對不潮~

4
s8855452
iT邦新手 5 級 ‧ 2013-06-22 17:13:34

nginx 的模組

整體採用模組化設計是nginx的一個重大特點,甚至http伺服器核心功能也是一個模組。要注意的是:nginx的模組是靜態的,添加和刪除模組都要對nginx進行重新編譯,這一點與Apache的動態模組完全不同。
與PHP的整合

目前使用FastCGI+Nginx執行PHP應用時如果配置檔案設定不合理,並不是十分可靠。建議使用NAMP架構(Nginx+Apache+Mysql+PHP),即使用Nginx處理靜態請求,並將動態請求反向代理給Apache處理。

看自己的需求 決定吧

看更多先前的回應...收起先前的回應...
bizpro iT邦大師 1 級 ‧ 2013-06-22 17:16:25 檢舉

s8855452提到:
目前使用FastCGI+Nginx執行PHP應用時如果配置檔案設定不合理,並不是十分可靠。

我用FastCGI 轉給php-fpm, 沒遇過所謂不可靠. 如何不可靠? 願聞其詳.

fillano iT邦超人 1 級 ‧ 2013-06-23 10:57:32 檢舉

這一段文字是從wikipedia貼過來的,實際情況到底怎樣就不知道了XD...wiki上的中文介紹好像缺漏不少,也沒有參考資料,也許參考英文的解說會好一點...不過英文就沒有提到這些issue了。

至於實際使用上,在php配置會碰到怎樣的問題?我稍微google了一下:
https://nealpoole.com/blog/2011/04/setting-up-php-fastcgi-and-nginx-dont-trust-the-tutorials-check-your-configuration/ 依照標準教學文件設定的話,會造成漏洞,讓非*.php也可以被執行。假使系統可以上傳檔案,就可以把phpshell改名成圖檔上傳然後...執行。

中文wiki上介紹的nginx實在太簡略,而且描述不太精確,如果有引用參考資料會好一些。

bizpro iT邦大師 1 級 ‧ 2013-06-23 13:34:54 檢舉

fillano大,
謝謝您的連結,基本上是設定的錯誤, 改掉就好了.
Nginx有好幾本書, 一本中國人寫的, 今年也有一本Packt出版的Mastering Nginx.

fillano iT邦超人 1 級 ‧ 2013-06-23 22:14:19 檢舉

bizpro大,
嗯嗯...我不熟nginx,不過中文維基這部份寫的還蠻糟糕XD,所以想看看到底

目前使用FastCGI+Nginx執行PHP應用時如果配置檔案設定不合理,並不是十分可靠。

是在說什麼東西XD

afgn iT邦新手 5 級 ‧ 2013-08-16 10:08:09 檢舉

Nginx 是好物
前提是你能架御它, 設定就可以把你搞的七暈八素, 因為網路上很多文章都抄來抄去, 只能慢慢測試了 >"<

我要發表回答

立即登入回答