首页 > 代码库 > 浅谈nginx(一)
浅谈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配置***
浅谈nginx(一)