淺談nginx(一)
此文主要介紹nginx的基礎知識及其基本配置,一為鞏固,二為記錄
知識點:
-
nginx的作用
-
nginx的基本配置框架
-
nginx一些常用模塊介紹
1、什么是nginx
nginx是一款免費的,開源的,高性能的HTTP服務軟件,它不僅能 夠支持反向代理服務器,而且也能當作IMPA/POP3代理服務。它穩 定, 配置豐富,設置簡單,而且占用系統硬件資源少!這些特性 使得它深受廣大用戶喜歡。
1.1 Nginx的程序架構
Nginx架構: master/worker
-
一個主進程master:負責加載和分析配置文件,管理worker,并且可以平滑升級;
-
一個或多個worker:由master生成,處理并響應用戶請求
-
緩存相關進程:如cache loader、cache manager
特性:異步、事件驅動和非阻塞
-
并發請求處理:通過kevent/epoll/select,/dev/poll
-
文件IO:高級IO sendfile,異步,mmap
1.2 Nginx高度模塊化
Nginx是一個高度模塊化的程序,這高度模塊化的思想使得Nginx擁有巨大的優越性。它的5個大模塊分別為:核心模塊(包含主模塊main和事件模塊event),標準HTTP模塊,可選HTTP模塊,MAIL郵件模塊,第三方模塊
(1)核心模塊
-
main:主要用于配置錯誤日志、進程管理、權限控制等;
-
event:配置epoll、kqueue、select、poll等;
(2)標準HTTP模塊
-
支持標準http功能
(3)可選http模塊
-
主要用于拓展標準http功能,讓http能處理一些特殊的服務;
(4)郵件服務模塊
-
郵件服務模塊使得Nginx能夠處理或代理IMAP、POP3、SMTP協議
(5)第三方模塊
-
Nginx的第三方模塊使得自身的功能變得非常豐富;
2、nginx的安裝及配置
在CentOS7下安裝nginx 官方下載好安裝包后,必須現裝好pcre-devel、openssl-devel及 zlib-devel,安裝Nginx依賴這三個包
2.1 編譯安裝:
~]# yum install pcre-devel openssl-devel zlib-devel ~]# useradd -r nginx ~]# ./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_dav_module --with-http_stub_status_module --with-threads --with-file-aio ~]# make && make install
2.2 配置:
Nginx配置文件存放位置:
主配置/etc/nginx/nginx.conf,主配置中會調用其他配置,其他配置文件放在/etc/nginx/include/conf.d/.conf*(任意以.conf結尾的文件都是)
主配置文件結構:~]#vim /etc/nginx/nginx.conf main block:主配置段,也即全局配置段; event { ... }:事件驅動相關的配置; http { ... }:http/https 協議相關的配置段; mail { ... } stream { ... } http協議相關的配置結構 http { ... ...:各server的公共配置 server { ... }:每個server用于定義一個虛擬主機; server { ... server_name root alias location [OPERATOR] URL { ... if CONDITION { ... } } } }
2.2.1 main程序段的相關配置
分類:
-
正常運行必備的配置
1. 定義user :user nginx; 2. 定義pid文件路徑,指定nginx主進程號碼的文件路徑:pid /var/run/nginx.pid; 3. include file | mask,指明包含進來的其他配置文件:include /etc/nginx/conf.d/*.conf; 4. load_module file指明要裝載的動態模塊:load_module modules/ngx_http_geoip_module.so;
-
優化性能相關的配置
1. 定義worker進程的數量,通常應該為當前主機的cpu的物理核心數:worker_processes 1; 2. worker_cpu_affinity CPU MASK,使用cpu內核,可定義為auto CPU MASK: 00000001:0號CPU 00000010:1號CPU 例:worker_cpu_affinity 00000001 00000100;# 使用第1號和第3號cpu 3. worker_priority number,指定worker進程的nice值,設定worker進程優先級;默認[-20,20] 4. worker_rlimit_nofile number,worker進程所能夠打開的文件數量上限;
-
用于調試及丁文問題相關的配置
1. daemon on|off,是否以守護進程方式運行Nignx; 2. master_process on|off,是否以master/worker模型運行nginx;默認為on; 3. error_log file [level];
2.2.2事件驅動相關的配置
events { ... } 1. worker_connections number,每個worker進程所能夠打開的最大并發連接數數量; nginx所能承受的最大客戶連接數量 = worker_processes * worker_connections 2. use method,指明并發連接請求的處理方法; 例:use epoll; # 3. accept_mutex on | off,處理新的連接請求的方法;on意味著由各worker輪流處理新請求,Off意味著每個新請求的到達都會通知所有的worker進程;
2.2.3 http相關配置段
基本格式:
http { ... ... server { ... server_name root location [OPERATOR] /uri/ { ... } } server { ... } }
***ps:由于http相關配置下server段中涉及的模塊略多,所以另開篇幅——淺談Nginx(二)——-http下server配置***
原創文章,作者:yaoqin.liang,如若轉載,請注明出處:http://www.www58058.com/66643