如果是在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吧?
最近常看人在推薦Nginx,不知道它和Apache之間,有什麼樣的優缺點差異?
單單epoll/Kqueue就讓Nginx贏了. Apache用的人多, 文件多是最大的優點.
有人在使用Nginx嗎?為什麼選擇使用它而不是Apaceh呢?
初期用心研究後, Nginx是簡單易用又強大.
不用等 3.0,Apache 2.4 的 event mpm 已經是 Epoll/Kqueue 的實現了。
沒有好不好...只有合不合適...
就看程式用在那裡
當然超大流量的一定要選 ... Nginx
一般的當然就 apache
不然讓你找BUG找不完..兩個還是有小差異的
nginx 的模組
整體採用模組化設計是nginx的一個重大特點,甚至http伺服器核心功能也是一個模組。要注意的是:nginx的模組是靜態的,添加和刪除模組都要對nginx進行重新編譯,這一點與Apache的動態模組完全不同。
與PHP的整合
目前使用FastCGI+Nginx執行PHP應用時如果配置檔案設定不合理,並不是十分可靠。建議使用NAMP架構(Nginx+Apache+Mysql+PHP),即使用Nginx處理靜態請求,並將動態請求反向代理給Apache處理。
看自己的需求 決定吧
s8855452提到:
目前使用FastCGI+Nginx執行PHP應用時如果配置檔案設定不合理,並不是十分可靠。
我用FastCGI 轉給php-fpm, 沒遇過所謂不可靠. 如何不可靠? 願聞其詳.
這一段文字是從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實在太簡略,而且描述不太精確,如果有引用參考資料會好一些。