Nginx的特性:
模塊化設計、較好擴展性
高可靠性
master-->worker
低內存消耗
10000個keep-alive非活動連接在Nginx僅消耗2.5MB,支持event-driven,aio,mmap
支持熱部署
不停機而更新配置文件、更換日志文件、更新服務器程序版本
基本功能:
靜態資源的web服務器,能緩存打開的文件描述符
http, smtp, pop3協議的反向代理服務器,緩存、負載均衡;
支持FastCGI (fpm),uWSGI等協議的反代;
模塊化,非DSO(動態共享對象)機制,過濾器zip,SSI及圖像大小調整;
支持SSL
UNIX/LINUX、擴展功能:
基于名稱和IP的虛擬主機;
支持keepalive
支持平滑升級
定制訪問日志 ,支持使用日志緩沖區提高日志存儲性能
支持url rewrite
支持路徑別名
支持基于IP及用戶的訪問控制
支持速率限制,支持并發數限制
Nginx的基本架構:
master/worker
一個master進程,生成一個或多個worker,一個worker進程通過事件驅動機制響應多個請求。
master:加載配置文件、管理worker進程、平滑升級。。。
worker:http服務、http代理、fastcgi代理
進程復用: epoll, kqueue, /dev/poll (event ports) ,select, poll,,rt signals
磁盤io:支持AIO,Advanced IO,sendfile,,sendfile64,nmap(內存映射機制:文件的路徑映射到內存中,訪問它可以直接訪問文件)
worker負責接收http請求,如果使用緩存功能的話還負責從緩存加載數據直接響應,如果要訪問后端主機的話,則通過相關反代模塊訪問后端主機。worker中包含模塊分為核心模塊、標準模塊和第三方模塊,不同的模塊可以和不同的后端主機相連,HTTP通過ht_core模塊,PHP通過fastcgi模塊,memcache通過memcache模塊等等。
AJAX是什么,
?
1、Nginx和Apache相比優點:
輕量級:同樣起web服務,比apache占用更少的內存及資源;
抗并發:nginx 處理請求是異步非阻塞的,而apache 則是阻塞型的,在高并發下nginx 能保持低資源低消耗高性能;
高度模塊化的設計:編寫模塊相對簡單;
社區活躍:各種高性能模塊出品迅速。
2、Nginx作為Web服務器:
相比Apache,Nginx使用更少的資源,支持更多的并發連接,體現更高的效率。
Nginx作為負載均衡服務器:
Nginx既可以在內部直接支持Rails和PHP程序對外進行服務, 也可以支持作為HTTP代理服務器對外進行服務. Nginx采用C進行編寫, 不論是系統資源開銷還是CPU使用效率都不錯。
Nginx作為郵件代理服務器:
Nginx 同時也是一個非常優秀的郵件代理服務器(最早開發這個產品的目的之一也是作為郵件代理服務器)。
Nginx 啟動特別容易, 并且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啟動. 你還能夠不間斷服務的情況下進行軟件版本的升級。
3、Nginx配置簡潔,Apache復雜:
Nginx靜態處理性能比Apache高3倍以上;
Apache對PHP支持比較簡單,Nginx需要配合其他后端(php-fpm或者fastcgi);
Apache的組件比Nginx多。
4、Nginx與Apache最核心的區別:
在于apache是同步多進程模型,一個連接對應一個進程;nginx是異步的,多個連接(萬級別)可以對應一個進程。
5、nginx處理靜態文件好,耗費內存少:
apache有先天不支持多核心處理負載雞肋的缺點,建議使用nginx做前端,后端用apache。大型網站建議用nginx自帶的集群功能。
6、從使用情況來看:
nginx的負載能力比apache高很多。Nginx改完配置能-t測試一下配置有沒有問題,apache重啟的時候發現配置出錯了,會很崩潰,改的時候都會非常小心翼翼現在看有好多集群站,前端nginx抗并發,后端apache集群,配合的也不錯。
7、nginx處理動態請求是雞肋,一般動態請求要apache去做,nginx只適合靜態和反向。
8、Nginx優于apache的主要兩點:
1.Nginx本身就是一個反向代理服務器;
2.Nginx支持7層負載均衡,Nginx可能會比apache支持更高的并發。
10、你對web server的需求決定你的選擇。大部分情況下Nginx都優于Apache,比如說靜態文件處理PHP-CGI的支持、反向代理功能、前端apache、維持連接等等。在Apache+PHP(prefork)模式下,如果PHP處理慢或者前端壓力很大的情況下,很容易出現Apache進程數飆升,從而拒絕服務的現象。
11、可以看一下nginx lua模塊:https://github.com/chaoslaw...apache比nginx多的模塊,可直接用lua實現apache是最流行的,why?大多數人懶得更新到nginx或者學新事物。
12、對于nginx,它配置文件寫的很簡潔,正則配置讓很多事情變得簡單運行效率高,占用資源少,代理功能強大,很適合做前端響應服務器
13、Apache在處理動態有優勢,Nginx并發性比較好,CPU內存占用低,如果rewrite頻繁,那還是Apache較適合。