nginx.conf的结构和基础配置解析


title: nginx.conf的结构和基础配置解析
date: 2016-12-13 14:57:44
tags: nginx nginx.conf 配置
categories: nginx


nginx.conf中指令格式

  • simple directive(简单指令) 如 worker_processes 1;
  • block directive (块状指令) 如 http { }

nginx.conf文件结构:

image.png

文件结构大体结构

 main {
   simple_directives parameters; 
  
   events{
         event_directives parameters;   
      }
 
   http{
         http_directives parameters;
   server{
         server_directives parameters;
         
         location{
            location_directives parameters;
            
          }
        }
   } 
  }
  

其实最外层的main在nginx.conf中是默认实现的,并不会实际写出来。

nginx.conf基础默认配置项(带注释):

                                                                                                                                                                                                                                     #指定用什么用户去跑work process,默认用linux下的nobody用户                                                                                                                                                                                   
#user  nobody; 
#工作进程数,可以设置为auto,nginx会探测cpu核心数,启动相同数量的work process
worker_processes  1;  
#错误日志存放位置.既然叫错误日志,通常应设置级别为warn|error
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#主进程pid文件存放的地点
#pid        logs/nginx.pid;

#events模块只能在main上下文中,并且只能配置一个,
#其中可以包含7种简单指令
events {
    worker_connections  1024; 
    #每个worker process可以支持的最大连接数,生成环境根据需要可以设置更大一些(9000)
    #值得注意的是,此数字是包括了反向代理等等所需要的连接数在内,并不仅仅是指web端发起的连接数
   #multi_accept on #是否work进程一次只接收一个连接。并发较大时应打开
   #use epoll #选择底层处理连接的模型,Linux下默认epoll,无需自己设置
   #accept_mutex 
   #accept_mutex_delay
   #上面2参数是表示是否让worker进程使用one by one的工作模式,默认是关闭的。
   #开启的时候,在低并发的时候非工作状态下的worker process将休眠,避免浪费资源。
}

#nginx配置的“核心”
http {
    #include指令用于加载单独的配置文件模块,避免过于臃肿
    #而这里的mime.types表示此文件应该在nginx.conf的同级目录下。
    #其中的types模块用于表示nginx响应的文件后缀名和content-type直接的映射
    #比如你想要让浏览器识别你返回的mytxt.data文件为文本内容在浏览器中显示为文本,添加 text/plain   data;
    include       mime.types;
    #上面的匹配失败后,默认给的响应内容类型
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;
    #io时不阻塞处理connection,在传输大文件时使用,细节待研究
    sendfile        on; 
    #tcp_nopush     on;#貌似意思是只有在sendfile启用时使用,让nginx发包的时候满包发送(不明白)通常不使用
    #连接idle的最大时间,现代浏览器往往在一个页面同时打开多个connection传输js,css,html等。
    #设置最大idle时间避免过长等待浪费connection
    #keepalive_timeout  0;
    keepalive_timeout  65; 
    #开启response响应压缩,可以节省带宽,默认关闭。细节待研究
    #gzip  on;
    #server 上下文代表一个虚拟主机,可以有多个,内嵌在比如http,mail模块中
    server {
            listen 80; 
            server_name myapp.info; #如果是在本地试验,要修改/etc/hosts的域名映射到本机
            location / { #location的匹配规则too tricky,单开一篇blog 注意匹配的文件夹的访问权限
                    root /usr/local/nginx;
            }   
     }   
}

此文是《Nginx From Beginner to Pro》第三章的阅读笔记
更详细的配置细节应查阅官网http://nginx.org/en/docs/

推荐阅读更多精彩内容

  • 配置运行Nginx服务器用户(组) 用于配置运行Nginx服务器用户(组)的指令是user,其语法格式为: use...
    吃瓜的东阅读 3,633评论 0 38
  • 前言 Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)...
    GarfieldEr007阅读 3,725评论 4 22
  • 我觉得我已经不一样了。虽然从一开始,我觉得在北京,有太多太多的人和我一样漂泊着,在网络上诉说着理想,月底白...
    小谷咩咩阅读 39评论 0 0
  • 浴室的毛巾烂了一个窟窿 像她的心 撕开了一个圆形的缺口 呼啦啦往里头灌着风 那个男人是个莽夫 喝了酒就拿起衣架 胡...
    却悔阅读 65评论 15 2
  • 大学部门里有这样一个男孩,喜欢同一部门里的女孩很久。 所有人都知道他喜欢她,唯独女孩。 部门里的人都知道他爱而不得...
    沂得山阅读 118评论 0 1