• nginx一:安装和基本应用


    Nginx:

    目录

    Nginx:... 1

    NGINX简介和安装... 1

    网站... 1

    全称... 2

    二次开发版... 2

    Nginx的特性... 2

    基本功能... 2

    web服务相关的功能... 2

    Nginx的基本架构:... 3

    模块类型... 3

    nginx主要用途... 3

    nginx安装配置... 3

    编译安装... 3

    前期准备... 3

    从官网获取源码包... 4

    查看编译帮助文档... 4

    安装... 4

    启动NGINX. 5

    NGINX配置文件... 5

    配置文件组成... 5

    配置文件配置指令... 6

    配置文件结构... 6

    全局配置网段:main block. 6

    事件驱动配置... 6

    http配置段... 6

    配置文件简介... 7

    main配置段... 7

    NGINX简介和安装

    网站

    http://nginx.org/, C10k;

    http://www.nginx.com

    全称

    完整写法engine X:简写为nginx

    二次开发版

    二次开发版tengine(淘宝), OpenResty

    Nginx的特性

    1. 模块化设计,所以较好扩展性;
    2. 高可靠性

             master/worker两级架构,master主控进程,worker为子进程,每个worker都有自己的 核心模块例如为了实现http功能有ht_core,和非核心模块例如ht_proxy,ht_fastcgi

    1. 支持热部署

             不停机更新配置文件、更换日志、更新服务器程序版本;

    1. 低内存消耗

             10000个keep-alive连接模式下的非活动连接(保持连接,但是没有数传输)仅消耗2.5M内存;

    1. 支持 event-driven, aio, mmap;
    2. 静态资源的web服务器;
    3. http协议的反向代理服务器;
    4. pop3, smpt, imap4等邮件协议的反向代理;
    5. 能缓存打开的文件(元数据)、
    6. 支持FastCGI(php-fpm), uWSGI(Python Web Framwork)等协议
    7. 模块化(非DSO机制),著名模块有:过滤器zip,SSI,SSL;
    8. 虚拟主机(server)
    9. keepalive
    10. 访问日志(支持基于日志缓冲提高其性能)
    11. url rewirte
    12. 路径别名
    13. 基于IP及用户的访问控制
    14. 支持速率限制及并发数限制;
    15. master/worker

    基本功能

    web服务相关的功能

    Nginx的基本架构:

    a)         一个master进程,可生成一个或多个worker进程;

    b)         master: 加载配置文件、管理worker进程、平滑升级,...

    c)         worker:http服务,http代理,fastcgi代理,...               

    模块类型

    1. 核心模块:core module
    2. 标准模块:

    a)         Standard HTTP modules

    b)         Optional HTTP modules

    c)         Mail modules

    1. 第三方模块:3rd party modules
    2. 静态资源的web服务器
    3. http服务器反向代理

    nginx主要用途

    nginx安装配置

    使用yum info nginx查看相关信息,显示没有匹配的软件包可以列出,说明nginx并没有被收录至centos发行光盘中。所以可以使用epel源来安装nginx。

    编译安装

    前期准备

    安装开发组件

    yum -y groupinstall "Development Tools"  "Server Platform Development"

    安装PCRE,zlib,openssl

    yum -y install pcre zlib openssl pcre-devel pcre-devel openssl-devel

    PCRE – Supports regular expressions. Required by the NGINX Core and Rewrite modules.

    zlib – Supports header compression. Required by the NGINX Gzip module.

    OpenSSL – Supports the HTTPS protocol. Required by the NGINX SSL module and others.

    从官网获取源码包

    $ wget https://nginx.org/download/nginx-1.14.2.tar.gz

    $ tar zxf nginx-1.14.2.tar.gz   #解压

    $ cd nginx-1.14.2

    查看编译帮助文档

    ./config --help  #返回如下图结果

             注意有些模块前带有--without,这代表此模块默认加载。有些模块前带有--with这代表此模块默认不被加载需要在编译的时候使用--with-*_module编译。

    安装

    ./configure

    --prefix=/usr/local/nginx

    --conf-path=/etc/nginx/nginx.conf

    --user=nginx

    --group=nginx 

    --error-log-path=/var/log/nginx/error.log

    --http-log-path=/var/log/nginx/access.log

    --pid-path=/var/run/nginx/nginx.pid

    --lock-path=/var/lock/nginx.lock

    --with-http_ssl_module

    --with-http_stub_status_module

    --with-http_gzip_static_module

    --with-debug

    make &&make install

    启动NGINX

    /usr/local/nginx/sbin/nginx

    这个报错是因为我在编译安装时指定运行worker的用户为nginx。然而我没有在系统中创建这个用户。

    NGINX配置文件

    配置文件组成

    1. 主配置文件:nginx.conf
    2. 注意:

    a)         除去上图所有文件外,nginx配置文件还包括在nginx.conf中使用include指令指定的配置文件。

    b)         上图中有类似A.conf和A.conf.default的配置文件。其中A.conf.default,是默认的配置文件

    配置文件配置指令

    1. 切记:配置指令必须以分号结尾
    2. 格式:Directive  value1 [value2...];
    3. 变量:支持使用变量

    a)              内置变量:由模块引入;

    b)              自定义变量:

    l    set  variable  value;                                    

    c)         引用变量:$variable

    配置文件结构

    全局配置网段:main block

    事件驱动配置

             event {

                      ...

             }

    http配置段

             http {

                       ...

                       server {

                                ...

                                server_name

                                root

                                alias

                                location /uri/ {

                                        

                                }

                                ...

                       }

                       server {

                                ...

                       }

             }

    配置文件简介

    main配置段

    正常运行必备的配置

    优化性能相关的配置

    用于调试、定位问题的配置

            

    1. 正常运行必备的配置:由核心模块引入的配置

    a)         user USERNAME  [GROUPNAME];

                       指定用于运行worker进程的用户和组;

                       eg:user  nginx  nginx;

    b)         pid  /PATH/TO/PID_FILE;

                       指定nginx进程的pid文件路径;

                       eg:pid  /var/run/nginx.pid;

    c)         worker_rlimit_nofile number;

                       指定一个worker进程所能够打开的最大文件数量;                

    1. 性能优化相关的配置:

    a)         worker_processes  auto|number;

                       worker进程的个数;通常应该为物理CPU核心数量减1;

                       可以为"auto",实现自动设定;

    b)         worker_cpu_affinity  auto|CPUMASK CPUMASK ...;

                       设置worker与CPU的亲和力。通过该指令可以将一个worker进程绑定到指定CPU。

    c)         worker_priority  number;

                       通过nice值,设置worker进程的优先级,从-20(最高)到19(最低),默认为0。                  注意内核的有优先级为-5,因此不建议设值<=-5          

    1. 调试、定位问题的配置:

    a)         daemon  off|on;

                       是否以守护进程方式启动nignx;

                       eg :daemon off

                      

    b)         master_process  on|off;

                       是否以master/worker模型运行nginx,设置为off将不启动worker进程;

    c)         error_log  file [level];

    l  file:其值可以是如下几种

                       PATH/TO/LOG:记录日志文件的位置。s

                       Stderr:将日志处处到标准输出

                       syslog:server=adderess:将日志发往指定的日志服务器

                       memory:size:将日志输出到内存中

    l  level:设定日志级别

                       debug, info, notice, warn, error, crit, alert, or emerg

                       注意:错误日志文件及其级别;出于调试的需要,可以设定为debug;但debug仅在编译时使用了“--with-debug”选项时才有效;

  • 相关阅读:
    程序基址,X64Dbg软件常用调试技巧查找系统函数调用位置执行到指定位置断点
    #pragma的常用方法讲解,为什么有了条件编译符号“DEBUG”还要来个Debugger.IsAttached
    JDK17Src0.java.base
    nmon的安装和使用
    64位下的相对指令地址X86指令格式(操作码列和指令列解释)
    内存中的程序剖析
    Linux I/O 原理和 Zerocopy 技术全面揭秘
    Ubuntu命令行的垃圾箱,回收站
    SecureCRT密钥链接阿里云
    HTTP API 认证授权术
  • 原文地址:https://www.cnblogs.com/wxxjianchi/p/11157149.html
Copyright © 2020-2023  润新知