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 {
            ...
            }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Page 1:nginx 服务器安装及配置文件详解 CentOS 6.2 x86_64 安装 nginx 1.1 ...
    xiaojianxu阅读 12,724评论 1 41
  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,925评论 24 1,002
  • 1.简介:  Nginx:engine X ,2002年,开源,商业版 http协议:web服务器(类似于ht...
    尛尛大尹阅读 5,894评论 0 3
  • 上一篇《WEB请求处理一:浏览器请求发起处理》,我们讲述了浏览器端请求发起过程,通过DNS域名解析服务器IP,并建...
    七寸知架构阅读 81,555评论 21 356
  • 这场戏你看的满意吗, 我就是那滑稽的小丑啊, 都在嘲笑着我那, 浮夸的演技吧, 反正无人在意, 谁是那个小丑吧! ...
    落凌清绝阅读 1,661评论 0 0

友情链接更多精彩内容