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配置***

原创文章,作者:yaoqin.liang,如若转载,请注明出处:http://www.178linux.com/66643

(0)
yaoqin.liangyaoqin.liang
上一篇 2017-01-14 23:22
下一篇 2017-01-16 00:09

相关推荐

  • linux防火墙介绍

    一、前言firewall(防火墙):工作在网络进入或者流包,进出的网络数据包进行一定的规则进行检查过滤系统。包括iptables和netfilter组件。iptables 是与 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统系统中更好地控制 IP 信息包过滤和…

    2017-04-30
  • linux运维

    linux运维大纲,学习路线图

    Linux干货 2017-10-21
  • Shell中的循环语句

    在编程语言中,循环语句是最基本的语法之一,在Shell(这里是Bash)中也不例外。把相关内容整理一下吧。 这里包括for/while/until循环,以及变量自增的语法实例。 Shell(以Bash为例)中的循环语句一般有for、while、until这几种,偶尔还有写错语法的时候,这里结合实例来自己总结一下。也为今后使用提供一个快捷的资料获取渠道。 一、…

    Linux干货 2016-08-22
  • lvs

    Lvs 一、lvs集群的类型:4类工作模式 1.1、lvs-nat 特点:通过将请求报文中的目标地址和目标端口修改为挑选出的某RS的RIP和PORT实现转发。 客户端访问lvs集群服务,此时报文的源地址为cip,目标地址为vip,通过lvs进行dnat转发后端服务器主机,此时,报文的源地址为cip,目标地址为rip;后端主机响应时,报文源地址为rip,目标地…

    Linux干货 2016-10-30
  • PHP安全模式详解(PHP5.4安全模式将消失)

    1. 安全模式      一直没有用过php的safe_mode安全模式,以此说明作为日后参考。      PHP 的安全模式是为了试图解决共享服务器(shared-server)安全问题而设立的。在结构上,试图在 PHP 层上解决这个问题是不合理的,但修改 web 服务器层和操作系统层显得非常不现…

    Linux干货 2015-06-02
  • 高级文件系统管理之磁盘配额及RAID的运用

    本章内容 设定文件系统配额 设定和管理软RAID设备 一,概述 配置配额系统: 综述 在内核中执行 以文件系统为单位启用 磁盘配额最小单位是以文件系统为单位启用,就是一个挂载点,而不能以目录为单位 对不同组或者用户的策略不同 根据块或者节点进行限制 执行软限制(soft limit) 硬限制(hard limit) 初始化 分区挂载选项:usrquota、g…

    Linux干货 2016-09-07