• nginx


    nginx 学习笔记

    nginx 安装

    • 登陆
      nginx官网 iamge 可以看到官网一般会维护两个版本一个是文档版本(偶数),一个是测试不稳定版(基数)
    • 下载稳定版nginx image
    • 解压进入nginx目录image
      • 目录结构
        ├── auto
        ├── CHANGES
        ├── CHANGES.ru
        ├── conf
        ├── configure
        ├── contrib
        ├── html
        ├── LICENSE
        ├── man
        ├── README
        └── src
        src目录中存放了Nginx软件的所有源代码
        man目录中存放了Nginx软件的帮助文档,Nginx安装完成后,在命令行中使用man命令查看,如下:
    $ man nginx
    

    html目录中存放了两个后缀名为.html的静态网页文件(与Nginx的运行相关

    conf目录中存放的是Nginx的配置文件,包含基本配置文件和对部分特性的配置文件

    auto目录中存放了大量脚本文件,和configure脚本程序有关

    configure文件是Nginx的自动脚本程序。

    • 配置高亮
      vim conf/nginx.conf如下图
      image并没有nginx特殊配置的亮度显示
    mkdir  ~/.vim/
    cp -r contrib/vim/* ~/.vim
    

    再次查看 此时实现了(nginx)代码高亮
    iamge

    • 源码编译安装
    ./configure --prefix==/opt/nginx/  
    make
    make install
    

    注意 在make之后会生成objs文件夹,进入到文件夹里面会发现
    image
    里面的文件都是编译生成的中间文件 ngx_modeles.c 里面是编译需要的模块 在新的文件夹里面很多文件(比如配置文件)都是从源码包直接拷贝过来的

    • nginx安装完成之后文件夹
      iamge 我们可以发现在nginx启动之后心生成了很多文件夹

    nginx配置详解

    • user nobody;

    表示启动的用户,默认值:nobody nobody
    如果主进程以root运行,Nginx将会调用setuid()/setgid()来设置用户/组,如果没有指定组,那么将使用与用户名相同的组,默认情况下会使用nobody用户与nobody组(或者nogroup),或者在编译时指定的--user=USER和--group=GROUP的值。 因为非root无法启动>1024的端口,但是我们常用的80 443端口都是小于1024的---这个的设置指挥影响worker的进程属组
    如图
    iamge

    • worker_processes 1;

    启动的worker的进程个数,一般保持和cpu和core一样

    • pid logs/nginx.pid;

    pid的保存位置

    • events 模块

    accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
    multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off

    use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport

    worker_connections 1024; # 最大连接数
    client_header_buffer_size 4k;
    open_file_cache max=2000 inactive=60s;
    open_file_cache_valid 60s;
    open_file_cache_min_uses 1
    }

    (1)accept_mutex on;
    惊群现象:一个网路连接到来,多个睡眠的进程被同事叫醒,但只有一个进程能获得链接,这样会影响系统性能。设置网路连接序列化,防止惊群现象发生,默认为on

    (2)multi_accept on;
    设置是否允许同时接受多个网络连接:

      只能在events模块设置,Nginx服务器的每个工作进程可以同时接受多个新的网络连接,但是需要在配置文件中配置,此指令默认为关闭,即默认为一个工作进程只能一次接受一个新的网络连接,打开后几个同时接受多个。

    (3)use epoll;

    使用epoll的I/O 模型(值得注意的是如果你不知道Nginx该使用哪种轮询方法的话,它会选择一个最适合你操作系统的)

    补充说明:与apache相类,nginx针对不同的操作系统,有不同的事件模型
        A)标准事件模型
        Select、poll属于标准事件模型,如果当前系统不存在更有效的方法,nginx会选择select或poll
        B)高效事件模型
        Kqueue:使用于FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.使用双处理器的MacOS X系统使用kqueue可能会造成内核崩溃。
        Epoll:使用于Linux内核2.6版本及以后的系统。
        /dev/poll:使用于Solaris 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+。
        Eventport:使用于Solaris 10. 为了防止出现内核崩溃的问题, 有必要安装安全补丁

    查看linux版本号可以使用 cat /proc/version命令

    cat /proc/version
    Linux version 2.6.32-504.23.4.el6.x86_64 (mockbuild@c6b9.bsys.dev.centos.org)

    (gcc version 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) )

    1 SMP Tue Jun 9 20:57:37 UTC 2015

    (4)worker_connections 2000;

    工作进程的最大连接数量 理论上每台nginx服务器的最大连接数为worker_processes*worker_connections worker_processes为我们再main中开启的进程数

    (5)keepalive_timeout 60;

    keepalive超时时间。 这里指的是http层面的keep-alive 并非tcp的keepalive 。

    (6)client_header_buffer_size 4k;

    客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为系统分页大小。查看系统分页可以使用 getconf PAGESIZE命令

    getconf PAGESIZE
    输入如下:

    [xxxx nginx]# getconf PAGESIZE

    4096

    (7)open_file_cache max=2000 inactive=60s;

    为打开文件指定缓存,默认是没有启用的,max指定缓存最大数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存 打开文件最大数量为我们再main配置的worker_rlimit_nofile参数

    (8)open_file_cache_valid 60s;

    这个是指多长时间检查一次缓存的有效信息。如果有一个文件在inactive时间内一次没被使用,它将被移除

    (9)open_file_cache_min_uses 1;

    open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如果有一个文件在inactive时间内一次没被使用,它将被移除。

  • 相关阅读:
    如何较为方便的在GMap.Net中实现车辆运行轨迹
    WPF中在摄像头视频上叠加控件的解决方案
    Image Perimeters
    [DFS]排队(间隔排列)-C++
    稀疏图判定
    兔子问题(Rabbit problem)
    YCOJ过河卒C++
    洛谷P1076 寻宝
    P1993 小K的农场(差分约束)
    大Jump!
  • 原文地址:https://www.cnblogs.com/ZFBG/p/11189341.html
Copyright © 2020-2023  润新知