zoukankan      html  css  js  c++  java
  • nginx配置文件详解


    参考帮助文档

    1)全局配置

    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

    2)性能优化相关的配置

    1、worker_processes number | auto

    worker进程的数量;通常应该为当前主机的CPU的物理核心数;

    2、worker_cpu_affinity cpumask ...

    worker_cpu_affinity auto [cpumask] 提高缓存命中率

    CPU MASK: 00000001:0号CPU

    ​ 00000010:1号CPU

    ​ 10000000:8号CPU

    worker_cpu_affinity 0001 0010 0100 1000;

    worker_cpu_affinity 0101 1010;

    3、worker_priority number

    指定worker进程的nice值,设置worker进程优先级:[-20,20]

    4、worker_rlimit_nofile number

    worker进程能够打开的文件数量上限,比如:65535

    3)事件驱动相关的配置

    events {

    ……

    }

    1、worker_connections number

    每个worker进程所能够打开的最大并发链接数数量,如10240

    总最大并发数:woker_processes * worker_connections

    2、use method

    指明并发连接请求的处理方法,默认自动选择最优方法:

    use epoll

    3、accept_mutex on | off

    处理新的链接请求的方法:on指由各个worker轮流处理新请求,off指每个新请求的到达都会通知(唤醒)所有的worker进程,但只有一个进程可获得连接,造成“惊群”,影响性能;

    4)测试和定位问题

    1、daemon on | off

    是否以守护进程方式运行nginx,默认是守护进程方式;

    2、master_process on | off

    是否以master/worker模型运行nginx,默认为on;

    3、error_log file [level]

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

    5)http协议的相关配置

    http {
    	…………
    	server {
    	…………
    	server_name
    	root
    	location [OPERATOR] /uri/ {
    			……
    		}
    
    	}
    	server {
    	  ……
    	}
    }
    

    6)与套接字相关的配置

    1、server {……}

    配置一个虚拟主机

    server {
    	listen address [:PORT]|PORT;
    	server_name SERVER_NAME;
    	root /PATH/TO/DOCUMENT_ROOT;
    }
    

    2、listen PORT|address[:port]|unix:/PATH/TO/SOCKET_FILE

    listen address [:port] [default_server] [ssl] [http2 | spdy] [backlog=number] [rcvbuf=size] [sndbuf=size]

    • default_server:设定为默认虚拟主机
    • ssl:限制仅能通过ssl连接提供服务
    • backlog=number:超过并发连接数后,新请求进入后援队列的长度
    • rcvbuf=size:接收缓冲区大小
    • sndbuf=size:发送缓冲区大小

    虚拟主机实现方法:

    (1)基于port

    listen PORT; 指令监听在不同的端口

    (2)基于虚拟IP

    listen IP:PORT; IP地址不同

    (3)基于hostname

    server_name fqdn; 指令执行不同的主机名

    3、server_name name……;

    • 虚拟主机的知己名称后可跟多个由空白字符分隔的字符串

    • 支持*通配任意长度的任意字符

      server_name *.lvzhenjiang.com www.lvzhenjiang.*

    • 支持~起始的字符做正则表达式模糊匹配,性能原因慎用

      server_name ~^wwwd+.lvzhenjiang.com$

      说明:d表示[0-9]

    • 匹配优先级机制从高到第:

      (1)首先是字符串精确匹配,如:www.lvzhenjiang.com

      (2)左侧*通配符,如*.lvzhenjiang.com

      (3)右侧*通配符,如www.lvzhenjiang.*

      (4)正则表达式,如~^wwwd+.lvzhenjiang.com$

      (5)default_server

    4、tcp_nodelay on | off

    在keepalived模式下的链接是否启动TCP_NODELAY选项

    当为off时,延迟发送,合并多个请求再发送

    默认为on时,不延迟发送

    可用于:http、server、location

    5、sendfile on | off

    是否启动sendfile功能,在内核中封装报文直接发送

    默认off

    6、server_tokens on | off | build | string

    是否在响应报文的Server首部显示nginx版本

    7、root

    设置web资源的路径映射;用于指明请求的URL所对应的文档的目录路径,可用于http、server、loation、if in location

    server {
    	……
    	root /data/www/vhosts;
    }
    

    8、location [=||*|^~] uri {……}

    location @name{……}

    在一个server中location配置段可存在多个,用于实现从uri到文件系统的路径映射;nginx会根据用户请求的URL来检查定义的所有locatiobn,并找出一个最佳匹配,而后应用其配置。

    示例:

    server {
    	server_name www.lvzhenjiang.com;
    	location /images/ {
    		root /data/www/
    	}
    }
    # 此时访问
    http://www.lvzhenjiang.com/1.jpg 访问的路径是 /data/www/images/1.jpg 
    
    • = :对URL做精确匹配:

      location = / {
      ……
      }
      http://www.lvzhenjiang.com/    # 匹配
      http://www.lvzhenjiang.com/index.html    # 不匹配
      
    • ^~ :对URL的最左边部分做匹配检查,不区分字符大小写;

    • ~ :对URL做正则表达式匹配,区分字符大小写;

    • ~*:对URL做正则表达式匹配,不区分字符大小写;

    • 不带符号:匹配起始于此URL的所有URL

    匹配优先级:= >> ^~ >> ~/~* >> 不带符号

    9、alias path

    路径别名,文档映射的另一种机制,仅能用于location上下文

    示例:

    http://www.lvzhenjiang.com/bbs/index.php
    
    location /bbs/ {
    	alias /web/forum;       # 访问的是/web/forum、index.html
    }
    
    location /bbs/ {
    	root /web/forum;     # 访问的是/web/forum/bbs/index.html;
    }
    

    注意:location中使用root指令和alias指令的意义不同:

    (1)root:给定的路径对应于location中的/url/侧的/

    (2)alias:给定的路径对应于location中的/url/侧的/

    10、index file

    指定默认网页文件,注意:ngx_http_index_module模块

    11、error_pagecode …… [ = [response]] uri

    模块:ngx_http_core_module

    定义错误页,以指定的响应状态码进行响应!

    可用位置:http、server、location、if in location

    location
    	error_page 404/404.html
    	error_page 404 =200 /404.html
    

    12、try_files file …… uri

    try_files file …… =code

    按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URL的指向。最后一个参数是回退URL且必须存在,否则会出现内部500错误!

    locationn /images/ {
    	try_files $uri /images/default.gif;
    }
    location / {
    	try_files $uri $uri/index.html $uri.html =404;
    }
    
    # $uri 含义:www.lvzhenjiang/123.html    $uri就是表示123.html
    

    7)定义客户端请求的相关配置

    1、keepalive_timeout timeout [header_timeout]

    设定保持连接超时时长,0表示禁止长连接,默认为75s;

    2、keepalive_requests number

    在一次长连接上锁允许请求的资源的最大数量,默认为100;

    3、keepalive_disable none | browser ……

    对哪种浏览器禁用长连接

    4、send_timeout time

    向客户端发送响应报文的超时时长,此处是指两次写操作之间的间隔时长,而非整个响应过程的传输时长!

    5、client_body_buffer_size zise

    用于接收每个客户端请求报文的body部分的缓冲区大小;默认为16k;超出此大小时,将其被暂存到磁盘上的由下面client_body_temp_path指令所定义的位置;

    6、client_body_temp_path path [level 1 [level 2 [level 3]]]

    设定存储客户端请求报文的body部分的临时存储路径及子目录结构的数量

    8)对客户端进行限制的相关配置

    1、limit_rate rate

    限制响应给客户端不能的传输速率,单位是bytes/second,默认值0表示无限制;

    2、limit_except method…… {……},仅能用于location

    限制客户端使用除了指定的请求方法之外的其他方法

    limit_except GET {
    	allow 192.168.99.0./24;
    	deny all;
    	
    }
    

    9)文件操作优化的配置

    1、aio on | off | threads[=pool]

    是否启用aio功能!

    2、directio size | off

    当文件大于等于给定大小时,例如directio 4m,同步(直接)写入磁盘,而非写入缓冲!

    3、open_file_cache off

    open_file_cache max=N [inactive=time]
    nginx可以缓存以下三种信息:

    • 文件元数据:文件的描述符、文件大小和最近一次的修改时间;
    • 打开的目录结构;
    • 没有找到的或者没有权限访问的文件的相关信息;

    max=N:可缓存的缓存项上限;达到上限后会使用LRU算法实现管理
    inactive=time:缓存项的非活动时长,在此处指定的时长内未被命中的或命中的次数少于open_file_cache_min_uses指令所指定的次数的缓存项即为非活动项,将被删除!

    4、open_file_cache_errors on | off

    是否缓存查找时发生错误的文件一类的信息!默认值为off

    5、open_file_cache_min_uses number

    open_file_cache指令的inactive参数指定的时长内,至少被命中此处指定!

    6、open_file_cache_valid time

    缓存项有效性的检查频率,默认值为60s

    *************** 当你发现自己的才华撑不起野心时,就请安静下来学习吧!***************
  • 相关阅读:
    objc_setAssociatedObject 使用(转)
    UIWebView加上safari风格前进后退按钮(转)
    解决 ios7.0 以后自定义导航栏左边按钮靠右的问题
    iOS开发中邮箱,电话号码,身份证,密码,昵称正则表达式验证
    利用openURL,在IOS应用中打开另外一个应用
    点击按钮打开文件
    CString的中文显示乱码的解决办法
    Unicode字符集和多字节字符集关系(转载)
    MFC基础--C++中的字符集(转自MSDN)http://msdn.microsoft.com/zh-cn/library/06b9yaeb(v=vs.90).
    MFC基础--CString的Tokenize()和_tcstok()的用法对比
  • 原文地址:https://www.cnblogs.com/lvzhenjiang/p/14022175.html
Copyright © 2011-2022 走看看