一、nginx簡介
1、特點:
(1)nginx服務器既可以作為HTTP服務器,也可以作為反向代理服務器,還可以作為郵件服務器;
(2)能夠快速響應靜態頁面的請求;
(3) 支持 FastCGI、SSl、VirtualHost、URLRewirte、HTTP Basic Auth 、Gzip等大量使用功能;并且支持共多的第三方功能模塊的擴展
2、nginx三類基礎功能介紹
(1)作為HTTP服務器
A、處理靜態文件(如HTML靜態網頁);處理索引文件以及支持自動索引
B、支持HTTP下的安全套接層協議SSL
C、支持基于IP和servername的虛擬主機設置
D、支持重新加載配置以及在線升級時,不用中斷正在處理的請求
E、提供3XX-5XX錯誤代碼的重定向功能
F、提供遠程FastCGI服務
G、支持高并發鏈接
、、、眾多功能
(2)反向代理服務器
反向代理是nginx服務器作為web服務器的主要功能之一
在提供反向代理服務方面,nginx服務器轉發前端請求性能穩定,并且后端轉發與業務配置相互分離,配置相當靈活
它還可以做到負載均衡,解決網絡負載,提高web服務性能。
(3)支持郵件代理服務
支持IMAP和POP3認證
3、Nginx的程序架構:
master/worker
一個master進程:負載加載和分析配置文件、管理worker進程、平滑升級
一個或多個worker進程:處理并響應用戶請求
緩存相關的進程:
cache loader:載入緩存對象
cache manager:管理緩存對象
二、全局配置段常見的配置指令:
分類:
正常運行必備的配置
優化性能相關的配置
用于調試及定位問題相關的配置
事件驅動相關的配置
1、正常運行必備的配置:
打開Nginx朱配置文件/etc/nginx/nginx.conf看到全局配置段
(1)user user [group];
定義用戶和組工作進程使用的憑證。如果省略組,那么所屬組為用戶基本組。
(2)pid /PATH/TO/PID_FILE;
指定存儲nginx主進程進程號碼的文件路徑;
(3)include file | mask;
指明包含進來的其它配置文件片斷;
(4)load_module file;(1.10版本以后的可以使用DSO機制)
指明要裝載的動態模塊;
查看已存在的模塊
2、性能優化相關的配置:
(1)worker_processes number | auto;
worker進程的數量;通常應該等于小于當前主機的cpu的物理核心數;
auto:根據當前主機物理CPU核心數,自動設置work_proceeses數量
(2)worker_cpu_affinity auto [cpumask];
將每一個work_processes進程綁定在一個CPU上
注意:如果不綁定即不啟用此項功能,那么worker進程在那個CPU上運行,不確定的,有可能造成在同一個運行服務時間內一個CPU上運行多個worker進程,而有的CPU上運行一個worker進程
(3)worker_priority number;
指定worker進程的nice值,設定worker進程優先級;[-20,20]
(4)worker_rlimit_nofile number;
worker進程所能夠打開的文件數量上限(默認為1024);
一個worker進程可以1024個并發,它就可以打開1024個套接字文件(不包括其 它文件),
(5)worker_connections number;
單個worker進程所能處理的最大請求數量
實驗一:
手動指定worker進程數量和手動綁定CPU
指定worker進程優先級為-8
指定worer進程最大能打開的文件數量6000個(注意:此值要大于等于worker進程量和單個worker進程所能處理的請求數量的乘積)
語法檢查和重載配置文件
查看nginx的worker進程及所綁定的cpu和nice值
可以看到一共4個worker進程,nice值為-8 分別綁定在4個CPU上
實驗二:
自動獲取worker進程數量和自動綁定CPU
語法檢查和重載配置文件
查看nginx的worker進程及所綁定的cpu
對比實驗一,可以看到功能生效情況一致,只不過worker進程的綁定位置改變
3、調試、定位問題:
(1)daemon on|off;
是否以守護進程方式運行Nignx;
(2)master_process on|off;(主要用于開發測試)
是否以master/worker模型運行nginx;默認為on;
(3)error_log file [level];(它不是用rsyslog管理的。是自己本身的功能進行自我管理)
4、事件驅動相關的配置:
events {
…
}
(1)worker_connections number;
每個worker進程所能夠打開的最大并發連接數數量;
(2)use method;
指明并發連接請求的處理方法;(有兩種epoll和select(它限定1024))
use epoll;
(3)accept_mutex on | off;
處理新的連接請求的方法;on意味著由各worker輪流處理新請求,Off意味著每個新請求的到達都會通知所有的worker進程;
基本的全局配置如下圖:
原創文章,作者:zq,如若轉載,請注明出處:http://www.www58058.com/78194