Nginx

Nginx

Nginx(wngine X)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器

Nginx的程序架构:

        master/worker
            一个master进程:
                负载加载和分析配置文件、管理worker进程、平滑升级
            一个或多个worker进程
                处理并响应用户请求

特性:异步、事件驱动和非阻塞
并发请求处理:通过epoll/select
文件IO:高级IO sendfile,异步,mmap

nginx的三大功能:

        http {}:web服务器(类似于httpd,静态)、http reverse proxy(类似于httpd,动态)
        mail {}:反代IMAP4/POP3/SMTP
        stream{}: TCP/UDP reverse proxy 伪四层调度

nginx模块:高度模块化,但其模块早期不支持DSO机制;近期版本支持动态装载和卸载;

模块分类:

    核心模块:core module
    标准模块:
        HTTP modules:
            Standard HTTP modules
            Optional HTTP modules
        Mail modules
        Stream modules:传输层代理
        

程序环境:

    配置文件的组成部分:
        主配置文件:nginx.conf
            include conf.d/*.conf
            fastcgi, uwsgi,scgi等协议相关的配置文件
            mime.types:支持的mime类型
            主程序文件:/usr/sbin/nginx
            Unit File:nginx.service

配置:

    主配置文件的配置指令:
        directive value [value2 ...];
        注意:
        (1) 指令必须以分号结尾;
        (2) 支持使用配置变量;
        内建变量:由Nginx模块引入,可直接引用;
        自定义变量:由用户使用set命令定义;
        set variable_name value;
        引用变量:$variable_name

    
    主配置文件结构:
        main block:主配置段,也即全局配置段;
            event {
                    ...
            }:事件驱动相关的配置;
            http {
                    ...
            }:http/https 协议相关的配置段;
            mail {
                    ...
            }
            stream {
                    ...
            }
            
    http协议相关的配置结构
        http {
                ...
                ...:各server的公共配置
                server {
                    ...
                }:每个server用于定义一个虚拟主机;
                server {
                    ...
                    listen 
                    server_name
                    root
                    alias
                    location [OPERATOR] URL {
                        ...
                        if CONDITION {
                            ...
                        }
                    }
                }
            }

配置指令:
main配置段常见的配置指令:

分类:
    正常运行必备的配置
    优化性能相关的配置
    用于调试及定位问题相关的配置
    事件驱动相关的配置
                
正常运行必备的配置:
1、user
Syntax: user user [group];
Default:    user nobody nobody;
Context:    main
                    
Defines user and group credentials used by worker processes. If group is omitted, a group whose name equals that of user is used.
                    
2、pid /PATH/TO/PID_FILE;
指定存储nginx主进程进程号码的文件路径;
                    
3、include file | mask;
指明包含进来的其它配置文件片断;
                    
4、load_module file;   新版nginx才支持
指明要装载的动态模块;
                    
性能优化相关的配置:
1、worker_processes number | auto;
worker进程的数量;通常应该等于小于当前主机的cpu的物理核心数;
auto:当前主机物理CPU核心数;
                    
2、worker_cpu_affinity cpumask ...;
worker_cpu_affinity auto [cpumask];
                    
nginx进程的CPU亲缘性,限制绑定一个进程只运行在一个CPU上,绑了之后若是没做隔离这个CPU还可以运行其他的进程,但是此nginx进程只能运行在这一CPU;
                    
CPU MASK:位图掩码
00000000:
0000 0001:0号CPU
0000 0010:1号CPU
0000 0100:2号CPU
... ...
                        
0000 0011:0和1号CPU;
3、worker_priority number;
指定worker进程的nice值,设定worker进程优先级;[-20,20]数字越小,优先级越高
                    
4、worker_rlimit_nofile number;
worker进程所能够打开的文件数量上限;
                    
调试、定位问题:
1、daemon on|off;    
    是否以守护进程方式运行Nignx;centos6为on,使用脚本upstart启动服务进程,要求进程以守护进程运行,否则将占据终端,终端一关闭进程也终止,centos7为off,服务的启动和终止靠systemed来管理,要求进程运行在前台,否则systemed无法管理

2、master_process on|off;
是否以master/worker模型运行nginx;默认为on;
若为off表示至运行一个进程,即接受请求又处理请求,单进程结构
                    
3、error_log file [level];
                    
事件驱动相关的配置:
events {
    ...
}
                
1、worker_connections number;
每个worker进程所能够打开的最大并发连接数数量;
                    
worker_processes * worker_connections
                    
2、use method;
指明并发连接请求的处理方法,默认为epoll(事件驱动);
                        
    use epoll;
                        
3、accept_mutex on | off;
处理新的连接请求的方法;on意味着由各worker轮流处理新请求,Off意味着每个新请求的到达都会通知所有的worker进程;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,462评论 24 1,003
  • 什么是Nginx? Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器N...
    jiangmo阅读 2,500评论 1 9
  • I/O模型Nginx介绍Nginx的安装和目录结构Nginx的配置Nginx的编译安装 一、I/O模型 (一)I/...
    哈喽别样阅读 865评论 0 4
  • Nginx简介 解决基于进程模型产生的C10K问题,请求时即使无状态连接如web服务都无法达到并发响应量级一万的现...
    魏镇坪阅读 1,958评论 0 9
  • 公元前484年,孔子结束了长达14年的流亡生活,结束了所谓的周游列国,回到鲁国。当时鲁国的国君就是鲁哀公,可以由此...
    任艾军阅读 213评论 0 1