nginx一些参数配置详解

nginx的配置:
   正常运行的必备配置:
      1、user username [groupname];
          指定运行worker进程的用户和组
      2、pid /path/to/pidfile_name

nginx的pid文件

3、worker_rlimit_nofile #;
           一个worker进程所能够打开的最大文件句柄数;
      4、worker_rlimit_sigpending #;
           设定每个用户能够发往worker进程的信号的数量;

优化性能相关的配置:
       1、worker_processes #;
               worker进程的个数;通常应为CPU的物理核心数减1;

2、worker_cpu_affinity cpumask ...; 用于设置每个worker进程所占用的cpu核心个数

如下事例配置所示:8核CPU,其中6个核心分配(邦定)worker进程,8个0代表8核CPU,相应位上的数值为1.
               worker_processes 6;
               worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000;
       3、ssl_engine device;
               ssl硬件加速器的服务器,指定所使用的ssl硬件加速设备;
       4、timer_resolution interval;时间解析间隔

默认情况下,每收到一个内核事件,nginx都会调用gettimeofday()。使用此指令后,nginx仅在每经过指定的interval时间间隔后调用一次gettimeofday()。 可以理解为nginx减少产生gettimeofday()系统调用的次数,当然在工作进程中也降低定时器的精度。

5、worker_priority nice; 优先级
               -20,19之间的值;
               nginx进程的工作优先级
              注:1,2,5为优化的关键点
   事件相关的配置:
       1、accept_mutex [on|off]
               是否打开Ningx的负载均衡锁;此锁能够让多个worker进轮流地、序列化地与新的客户端建立连接;而通常当一个worker进程的负载达到其上限的7/8,master就尽可能不再将请求调度此worker;
       2、lock_file /path/to/lock_file;
               lock文件
       3、accept_mutex_delay #ms;
               accept锁模式中,一个worker进程为取得accept锁的等待时长;如果某worker进程在某次试图取得锁时失败了,至少要等待#ms才能再一次请求锁;
       4、multi_accept on|off;
               是否允许一次性地响应多个用户请求;默认为Off;
       5、use [epoll|rtsig|select|poll];[后面有详解]
               定义使用的事件模型,建议让nginx自动选择;
       6、worker_connections #;
               每个worker能够并发响应最大请求数;
 用于调试、定位问题: 只调试nginx时使用
       1、daemon on|off;
               是否让ningx运行后台;默认为on,调试时可以设置为off,使得所有信息直接输出控制台;
       2、master_process on|off
               是否以master/worker模式运行nginx;默认为on;调试时可设置off以方便追踪;
       3、error_log /path/to/error_log level;
               错误日志文件及其级别;默认为error级别;调试时可以使用debug级别,但要求在编译时必须使用--with-debug启用debug功能;

连接处理方法

引用至:http://tengine.taobao.org/nginx_docs/cn/docs/events.html#rtsig

nginx支持多种连接处理方法,而哪些处理方法可用则取决于使用的平台。如果平台支持多种方法,那么nginx一般会自动选择最高效的方法。如果需要,也可以使用use指令明确指定连接处理方法。

nginx支持下列连接处理方法:

  • select — 标准方法。在平台不支持更高效的方法时,nginx会自动编译此模块。可以使用--with-select_module--without-select_module编译选项强行开启或禁止编译此模块。
  • poll — 标准模块。在平台不支持更高效的方法时,nginx会自动编译此模块。可以使用--with-poll_module--without-poll_module编译选项强行开启或禁止编译此模块。
  • kqueue — FreeBSD 4.1+、OpenBSD 2.9+、NetBSD 2.0和Mac OS X的高效方法。
  • epoll — Linux 2.6+的高效方法。

    一些旧的发行版,比如SuSE 8.2,提供了补丁,在2.4内核上支持了epoll方法。

  • rtsig — 实时信号,Linux 2.2.19+的高效方法。系统级的事件队列默认有1024个信号的限制。在高负载的服务器上,将此限制上调可能是必须的。调整的方法是改变/proc/sys/kernel/rtsig-max内核参数的值。在Linux 2.6.6-mm2上,这个参数不存在,而且每个进程拥有自己的事件队列。每个队列的长度由RLIMIT_SIGPENDING所限,并可使用worker_rlimit_sigpending指令修改。

    队列溢出时,nginx丢弃这个队列,并回退到poll连接处理方法,直到情况恢复正常为止。

  • /dev/poll — Solaris 7 11/99+、HP/UX 11.22+ (eventport)、IRIX 6.5.15+和Tru64 UNIX 5.1A+的高效方法。
  • eventport — 事件端口,Solaris 10的高效方法。
                                                                       翻译: cfsego

虚拟主机相关的配置(Server):    
   1、server {}
       定义虚拟主机,nginx支持使用基于主机名或IP的虚拟主机;

2、listen
        listen address[:port];
        listen port

default_server:定义此server为http中默认的server;假如所有的server中没有任何一个listen使用此参数,那么第一个server即为默认server;
        rcvbuf=SIZE: 接收缓冲大小;
        sndbuf=SIZE: 发送缓冲大小;
        ssl: https server;

3、server_name [...];
       server_name可以跟多个主机名,名称中可以使用通配符和正则表达式(通常以~开头);当nginx收到一个请求时,会取出其首部的server的值,而后跟众server_name进行比较;比较方式:
       (1) 先做精确匹配;www.mytest.com
       (2) 左侧通配符匹配;*.mytest.com
       (3) 右侧通配符匹配;www.mytest.com, www.*
       (4) 正则表达式匹配: ~^.*\.mytest\.com$

4、server_name_hash_bucket_size 32|64|128;
               为了实现快速主机查找,nginx使用hash表来保存主机名;

5、location [ = | ~ | ~* | ^~ ] uri { ... }
        location @name { ... }
         功能:允许根据用户请求的URI来匹配指定的各location以进行访问配置;匹配到时,将被location块中的配置所处理;比如:http://www.mytest.com/images/logo.gif

=:精确匹配;
         ~:正则表达式模式匹配,匹配时区分字符大小写
         ~*:正则表达式模式匹配,匹配时忽略字符大小写
         ^~: URI前半部分匹配,不检查正则表达式

事例如下:客户请求的URI及相应的匹配结果

        location = / {
        [ configuration A ]
    }
        location / {
        [ configuration B ]
    }
        location /documents/ {
        [ configuration C ]
    }
        location ^~ /images/ {
        [ configuration D ]
    }
        location ~* \.(gif|jpg|jpeg)$ {
        [ configuration E ]
    } 

http://www.mytest.com/index.html(匹配B)
      http://www.mytest.com/(匹配A)
      http://www.mytest.com/documents/index.html(匹配B及C,但最终匹配到C)
      http://www.mytest.com/images/index.html(匹配B及D,但最终匹配到D)

http://www.mytest.com/images/a.png   (匹配B及D,但最终匹配到D)

http://www.mytest.com/images/a.gif    (匹配B及D,但最终匹配到E)

匹配优先级:
      (1)字符字面量最精确匹配

(2)正则表达式检索(由第一个匹配到所处理)

(3)按字符字面量
文件路径定义:
  1、root path
    设置web资源路径;用于指定请求的根文档目录;
       location / {
           root /www/htdocs;
         }
       location ^~ /images/ {
            root /web;  #相当于目录为/web/images/a.html
         }

#a.html在路径/web/imgages下,访问时为http://www.mytest.com/images/a.html

2、alias path
     只能用于location中,用于路径别名;
    location / {
      root /www/htdocs;
    }
    location ^~ /images/ {
      alias /web;#相当于目录为/images/a.html

}
    #a.html在路径/web下,访问时为http://www.mytest.com/images/a.html

3、index file ...;
               定义默认主页,可以跟多个值;

4、error_page code ... [=[response]] uri;
         当对于某个请求返回错误时,如果匹配上了error_page指令中设定的code,则重定向到新的URI中。

error_page 404 /404.html

error_page 404 =200 /404.html #在系统日志中,会显示200的错误(也就是自定义的返回值)

5、try_files path1 [path2 ...] uri;
          自左至右尝试读取由path所指定路径,在第一次找到即停止并返回;如果所有path均不存在,则返回最后一个uri;

location ~* ^/documents/(.*)$ {
             root /www/htdocs;
             try_files $uri /docu/$1 /temp.html;
            }

http://www.mytest.com/documents/a.html
            http://www.mytest.com/docu/a.html
            http://www.mytest.com/temp.html

nginx一些参数配置详解,布布扣,bubuko.com

时间: 2024-08-01 18:27:50

nginx一些参数配置详解的相关文章

nginx的安装配置详解

title: nginx的安装配置详解tags: nginx,虚拟服务器,curl nginx的安装配置详解 1. 介绍各个常用的服务端口 21 ftp :22 ssh:25 smtp:3306 mysql:873 rsync:3389 远程桌面:161 snmp:111 rpcbind:80 www http:443 https:110 pop3:53 dns:514 rsyslog 我们常用的nslookup和dig查询域名解析工具的安装包为bind-utils,如yum install b

linux串口编程参数配置详解

1.linux串口编程需要的头文件 #include <stdio.h>         //标准输入输出定义 #include <stdlib.h>        //标准函数库定义 #include <unistd.h>       //Unix标准函数定义 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>          //文件控制定义 #incl

Spark 性能相关参数配置详解-shuffle篇

作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 随着Spark的逐渐成熟完善, 越来越多的可配置参数被添加到Spark中来, 在Spark的官方文档http://spark.apache.org/docs/latest/configuration.html 中提供了这些可配置参数中相当大一部分的说明. 但是文档的更新总是落后于代码的开发的, 还有一些配置参数没有来得及被添加到

Nginx虚拟主机配置详解

Nginx虚拟主机配置详解 一.虚拟主机介绍 虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台"虚拟"的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功能(WWW.FTP.Email等),同一台主机上的虚拟主机之间是完全独立的.从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样. 利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程.虚拟主机提供了在同一台服务器.

nginx与fastdfs配置详解与坑

nginx与fastdfs配置详解与坑 环境ubantu19.04fastdfs-5.11fastdfs-nginx-module-1.20libfastcommon-1.0.39nginx-1.15.12pcre2-10.33openssl-1.0.2r nginx配置过程 https://blog.csdn.net/tjcyjd/article/details/69663348 ssl与依赖库 https://blog.csdn.net/g1531997389/article/details

Nginx配置文件(nginx.conf)配置详解

Nginx的配置文件nginx.conf配置详解如下: user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目.根据硬件调整,通常等于CPU数量或者2倍于CPU. error_log  logs/error.log; error_log  logs/error.log  notice; error_log  logs/error.log  info; 错误日志:存放路径. pid logs/nginx.pi

logback 常用参数配置详解

logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的组件. <appender>有两个必要属性name和class.name指定appender名称,class指定appender的全限定名. 1.ConsoleAppender: 把日志添加到控制台,有以下子节点: <encoder>:对日志进行格式化.(具体参数稍后讲解 ) &

Nginx服务器的配置详解

Nginx 配置文件详解 user nginx ; #用户 worker_processes 8; #工作进程,根据硬件调整,大于等于cpu核数 error_log logs/nginx_error.log crit; #错误日志 pid logs/nginx.pid; #pid放置的位置 worker_rlimit_nofile 204800; #指定进程可以打开的最大描述符 这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文 件数(ulimit -n)与ngin

TCP/IP 参数配置详解

了解LINUX TCP/IP的参数配置是网络性能调优的前提,但是要清楚的记得这几十个参数也不容易,为了方便下次查看,所以查找了linux的manual手册和网上的资料.主要列出了"/proc/sys/net/ipv4"下面的参数. 1.IP 参数 ●ip_always_defrag: 在LINUX早期的版本中出现,现在已经没有了,就不作说明了. ●ip_autoconfig:这个没有文档说明. ●ip_default_ttl (整数; 默认值:64; since Linux 2.2):