區別:1、apache是同步多進程模型,一個連接對應一個進程,而nginx是異步的,多個連接可以對應一個進程,nginx的負載能力比apache高;2、apache適合處理動態請求,而nginx適合處理靜態和反向;3、nginx配置簡潔,而apache配置複雜;4、apache的rewrite比nginx強大;5、apache更為成熟,少bug,而nginx的bug相對較多。
本教學操作環境:windows7系統、PHP8.1版、DELL G3電腦
Nginx
#輕量級,採用C 編寫,同樣的web 服務,會佔用更少的記憶體及資源
抗並發,nginx 以epoll and kqueue 作為開發模型,處理請求是非同步非阻塞的,負載能力比apache 高很多,而apache 則是阻塞型的。在高並發下 nginx 能保持低資源低消耗高效能 ,而 apache 在 PHP 處理慢或前端壓力很大的情況下,很容易出現進程數飆升,從而拒絕服務的現象。
nginx 處理靜態檔案好,靜態處理效能比apache 高三倍以上
nginx 的設計高度模組化,編寫模組相對簡單
nginx 設定簡潔,正規設定讓很多事情變得簡單,而且改完設定能使用-t 測試設定有沒有問題,apache 設定複雜,重啟的時候發現設定出錯了,會很崩潰
nginx 作為負載平衡伺服器,支援7 層負載平衡
nginx 本身就是反向代理伺服器,可以作為非常優秀的郵件代理伺服器
啟動特別容易, 並且幾乎可以做到7*24 不間斷運行,即使運行數月也不需要重新啟動,還能夠不間斷服務的情況下進行軟體版本的升級
社群活躍,各種高效能模組出品迅速
##Apache
兩者最核心的差異在於apache 是同步多進程模型,一個連接對應一個進程,而nginx 是異步的,多個連接(萬層)可以對應一個進程
一般來說,需要性能的web 服務,用nginx 。如果不需要效能只求穩定,更考慮 apache ,後者的各種功能模組實作得比前者,例如 ssl 的模組就比前者好,可設定項多。 epoll(freebsd 上是kqueue ) 網路IO 模型是nginx 處理性能高的根本理由,但並不是所有的情況下都是epoll 大獲全勝的,如果本身提供靜態服務的就只有寥寥幾個文件,apache 的select 模型或許比epoll 更高效能。當然,這只是根據網路 IO 模型的原理作的假設,真正的應用還是需要實測了再說的。既然nginx比apache快,為什麼nginx沒有取代apache?
因為兩個東西的重點不一樣,Apache本身內建了許多東西,無需借助其他東西就能夠幾乎所有的Web型應用程式來支援。而Nginx不同,它在靜態檔案的處理、高並發方面比較有優勢。
#apache運行php比較好,適合跑動態
以上是PHP伺服器nginx和apache有什麼不同的詳細內容。更多資訊請關注PHP中文網其他相關文章!