Nginx(一)基础知识介绍

一:简介

Nginx ("engine x") 是一个高性能的HTTP和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、新浪、网易、腾讯、 淘宝等

  • 特性
    • 模块化设计,较好的扩展性
    • 高可靠性
    • 低内存消耗
  • 基本功能:
    • 静态资源的web 服务器
    • http 协议反向代理服务器
    • pop3/imap4 协议反向代理服务器
    • FastCGI(lnmp),uWSGI(python) 等协议
    • 模块化(非DSO ),如zip ,SSL

二:Nginx的程序架构

  • nginx的程序架构:master/worker结构
    • 一个master进程:
      负责加载和分析配置文件、管理worker进程、平滑升级
    • 一个或多个worker进程
      处理并相应用户请求
    • 缓存相关的进程:
      • cache loader:载入缓存对象
      • cache manager:管理缓存对象
  • ngnx架构

三:nginx模块

  • nginx高度模块化,但其模块早期不支持DSO机制;近期版本支持动态装载和卸载
  • 模块分类:
    • 核心模块:core module
    • 标准模块:
      • HTTP 模块:ngx_http_* 、HTTP Core modules、HTTP Optional modules
      • Mail 模块:ngx_mail_*
      • Stream 模块:ngx_stream_*
  • 第三方模块

四: nginx的安装

  • 编译安装

yum install pcre-devel openssl-devel zlib-devel

useradd -r nginx

下载源码包并解压
tar xf nginx-1.12.1.tar.gz
cd nginx-1.12.1/

./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
  • 编译安装nginx选项
    • --prefix=/etc/nginx
      安装路径
    • --sbin-path=/usr/sbin/nginx
      指明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
      指明pid文件安装位置
    • lock-path=/var/run/nginx.lock
      锁文件安装位置
    • --http-client-body-temp-path=/var/cache/nginx/client_temp
      客户端body部分的临时文件存放路径,如果服务器允许客户端使用put方法提交给大数据时,临时存放的磁盘路径
    • --http-proxy-temp-path=/var/cache/nginx/proxy_temp
      作为代理服务器,服务器响应报文的临时文件存放路径
    • --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
      作为fastcgi代理服务器,服务器响应报文的临时文件存放路径
    • --http-uuwsgi-temp-path=/var/cache/nginx/uwsgi_temp
      作为uwsgi代理服务器,服务器响应报文的临时文件存放路径
    • --http-scgi-temp-path=/var/cache/nginx/scgi_temp
      作为scgi反代服务器,服务器响应报文的临时文件存放路径
    • --user=nginx
      指明以哪个身份运行worker进程,主控master进程一般由root运行
    • --group=nginx
    • --with-http_ssl_module
      表示把指定模块编译出来

五: nginx目录结构和命令

  • ls /usr/local/nginx/html
    html是测试页,sbin是主程序
  • ls /usr/local/nginx/sbin/nginx
    nginx只有一个程序文件
  • ls /usr/local/nginx/html/50x.html
    index.html测试网页
  • /usr/local/nginx/sbin/nginx -t
    测试nginx语法错误
  • /usr/local/nginx/sbin/nginx -h
    查看帮助选项
    • -c filename :指定配置文件(default:/etc/nginx/nginx.conf)
    • -s signal :发送信号给master进程,signal可为:stop,quit,reopen,reload
    • -g directives :在命令行中指明全局指令
  • /usr/local/nginx/sbin/nginx -s stop
    停止nginx
  • /usr/local/nginx/sbin/nginx
    启动nginx

六: nginx配置

  • 配置文件的组成部分:
    • 主配置文件:nginx.conf
    • fastcgi、uwsgi、scgi等协议相关的配置文件
    • mime.type:支持的mime类型
  • 主配置文件(/etc/nginx/nginx.conf)的配置指令:
    • directive value [ value2 ... ]
    • 注意:
      • 指令必须以分号结尾
      • 支持使用配置变量
        • 内建命令:由Nginx模块引入,可直接引用
        • 自定义变量:由用户使用set命令定义
          set variable_name value;
        • 引用变量:$variable_name

七: nginx配置文件

  • 主配置文件结构(/etc/nginx/nginx.conf
    • main block:主配置段,对http , mail都有效
    • event {
      ······
      } :时间驱动相关的配置
    • http {
      ······
      } : http/https协议相关配置段
    • mail {
      ······
      } :mail协议配置段
    • stream {
      ······
      } :stream服务器相关配置段
  • http协议相关的配置结构(/etc/nginx/nginx.conf
http {
   ...
   ... 各server 的公共配置
    server { 每个server 用于定义一个虚拟主机
           ...
            }
    server {
        ...
        server_name 虚拟主机名
        root 主目录
        alias 路径别名
        location [OPERATOR] URL { 指定URL 的特性
        ...
        if CONDITION {
...
             }
         }
     }
}

八、主配置文件中的全局配置段

/etc/nginx/nginx.conf

正常运行必备的配置:
帮助文档:http://nginx.org/en/docs/ngx_core_module.html

  • 1、user
Syntax:         user user [group];
Default:        user nobody nobody;
Context:        main

指定worker进程的运行身份,如组不确定,默认和用户名同名

  • 2、pid /PATH/TO/PID_FILE
    指定存储nginx主进程PID的文件路径

  • 3、include file | mask
    指明包含进来的其他配置文件片段

  • 4、load_module file
    /usr/share/nginx/modules/*.conf
    指明要装载的动态模块路径:/usr/lib64/nginx/modules

性能优化相关的配置

  • 1、work_processes number | auto
    worker进程的数量;通常应该为当前主机的CPU的物理核心数

  • 2、worker_cpu_affinity cpumask ···
    worker_cpu_affinity auto [cpumask] :提高缓存命中率
    CPU MASK:
    0000 0001:0号CPU
    0000 0010 : 1号CPU
    1000 0000 : 8号CPU

  • 3、worker_priority number
    指定worker进程的nice指,设定worker进程优先级:由高到低 :[ - 20 , 20 ]

  • 4、worker_rlimit_nofile number
    单个worker进程所能够打开的文件数量上限,如65535

调试和定位问题:

  • 1、daemon on | off
    是否以守护进程方式运行nginx,默认是守护进程方式

  • 2、master_process on | off
    是否以master/worker模型运行nginx;默认为on,off将不启动worker

  • 3、error_log file [level]
    错误日志文件及其级别;处于调试需要,可设定为debug;但debug仅在编译时使用了“--with-debug”选项时才有效
    level:debug|info|notice|warn|error|crit|alter|emerg

事件驱动相关的配置
events {
······
}

  • 1、worker_connections number
    每个worker 进程所能够打开的最大并发连接数数量,如10240
    总最大并发数:worker_processes * worker_connections

  • 2 、use method
    指明并发连接请求的处理方法, 默认自动选择最优方法
    use epoll;

  • 3 、accept_mutex on | off 互斥
    处理新的连接请求的方法;on指由各个worker 轮流处理新请求,Off指每个新请求的到达都会通知( 唤醒) 所有的worker 进程,但只有一个进程可获得连接,造成“惊群”,影响性能,默认on

http 协议的相关配置:

http {
    ... ...
    server {
            ...
            server_name
            root
            location [OPERATOR] /uri/ {
                ...
                }
            }
            server {
            ...
            }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容