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

2018-01-11  本文已影响0人  lazyguy

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


nginx.conf中指令格式

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/

上一篇下一篇

猜你喜欢

热点阅读