模塊化設計,較好的擴展性 支持熱部署:不停機更新配置文件,升級版本,更換日誌文件 低內存消耗:10000個keep-alive鏈接模式下的非活動鏈接,僅需2.5M內存 event-driven,aio,mmap,sendfile
虛擬主機(server) 支持 keep-alive 和管道鏈接(利用一個鏈接作屢次請求) 訪問日誌(支持基於日誌緩衝提升其性能) url rewirte 路徑別名 基於IP及用戶的訪問控制 支持速率限制及併發數限制 從新配置和在線升級而無須中斷客戶的工做進程
一、多進程方式: 服務器每接收到一個客戶端請求就有服務器的主進程生成一個子進程響應客戶端,直到用戶關閉鏈接,這樣的優點是處理 速度快,子進程之間相互獨立,可是若是訪問過大會致使服務器資源耗盡而沒法提供請求。 二、多線程方式: 與多進程方式相似,可是每收到一個客戶端請求會有服務進程派生出一個線程來個客戶方進行交互,一個線程的開銷遠遠小於一個進程, 所以多線程方式在很大程度減輕了web服務器對系統資源的要求,可是多線程也有本身的缺點,即當多個線程位一個進程內工做的時候, 能夠相互訪問一樣的內存地址空間,因此他們相互影響,一旦主進程掛掉則全部子線程都不能工做了,IIS服務器使用 了多線程的方式,須要間隔一段時間就重啓一次才能穩定。
1,讀取Nginx 配置文件並驗證其有效性和正確性 2,創建、綁定和關閉socket鏈接 3,按照配置生成、管理和結束工做進程 4,接受外界指令,好比重啓、升級及退出服務器等指令 5,不中斷服務,實現平滑升級,重啓服務並應用新的配置 6,開啓日誌文件,獲取文件描述符 7,不中斷服務,實現平滑升級,升級失敗進行回滾處理 8,編譯和處理perl腳本
1,接受處理客戶的請求 2,將請求以此送入各個功能模塊進行處理 3,IO調用,獲取響應數據 4,與後端服務器通訊,接收後端服務器的處理結果 5,緩存數據,訪問緩存索引,查詢和調用緩存數據 6,發送請求結果,響應客戶的請求 7,接收主程序指令,好比重啓、升級和退出等
wget http://nginx.org/download/nginx-1.14.2.tar.gz
tar xf nginx-1.14.2.tar.gz -C /usr/local
yum install pcre pcre-devel openssl-devel gcc gcc-c++ perl-ExtUtils-Embed
./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module --with-http_perl_module
make && make install nginx
vim /etc/profile.d/nginx.sh PATH=/apps/nginx/sbin/:$PATH
yum -y install git git clone https://github.com/openresty/echo-nginx-module.git
./configure \ --prefix=/apps/nginx \ --user=nginx --group=nginx \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --with-pcre \ --with-stream \ --with-stream_ssl_module \ --with-stream_realip_module \ --with-http_perl_module \ --add-module=/usr/local/src/echo-nginx-module #增長第三方模塊的路徑
make && make install