美文网首页
nginx.conf的结构和基础配置解析

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

作者: lazyguy | 来源:发表于2018-01-11 15:59 被阅读0次

    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.conf的结构和基础配置解析

          本文链接:https://www.haomeiwen.com/subject/lcctoxtx.html