nginx配置详细说明

\color{gray}{程序猿的快乐空间}

\color{gray}{民警:int 类型占几个字节?}
\color{gray}{我:4 个。}
\color{gray}{民警:你可以走了。}
\color{gray}{我感到很诧异。}
\color{gray}{我:为什么问这样的问题?}
\color{gray}{民警:深夜还在街上走,寒酸苦逼的样子,不是小偷就是程序员。}

一、全局快

    #所有用户具有启停权限
    user www www;
    # 设置为auto则自动适配进程, worker_processes最多开启8个,8个以上性能提升不会再提升了。
    worker_processes  8;
    # 错误日志分类,日志类型 [ DEBUG | info | notice | warn | error | crit | alert | emerg]
    error_log  logs/error.log  error
    error_log  logs/warn.log  warn
    #配置文件存放路径
    pid        logs/nginx.pid;
    # Nginx最多可以打开文件数
    worker_rlimit_nofile  65535;

二、events块块

     events {
        accept_mutex off;
        multi_accept off;
        use epoll;
        worker_connections  2048;
    }

accept_mutex:当一个新连接到达时,如果激活了accept_mutex,那么多个Worker将以串行方式来处理,其中有一个Worker会被唤醒,其他的Worker继续保持休眠状态;如果没有激活accept_mutex,那么所有的Worker都会被唤醒,不过只有一个Worker能获取新连接,其它的Worker会重新进入休眠状态,这就是惊群问题,建议关闭。use 设置用于复用客户端线程的轮询方法。如果你使用Linux 2.6+,你应该使用epoll。如果你使用*BSD,你应该使用kqueue。multi_accept 告诉nginx收到一个新连接通知后接受尽可能多的连接。 worker_connections 设置可由一个worker进程同时打开的最大连接数。

三、http块

1、http全局快
http {
      #定义
      include /etc/nginx/mime.types; # 只是一个在当前文件中包含另一个文件内容的指令
      default_type text/html;   # 设置文件使用的默认的MIME-type。
      charset UTF-8;   # 设置我们的头文件中的默认的字符集
      #高效传输设置
      server_tokens off;       # 并不会让nginx执行的速度更快,但它可以关闭在错误页面中的nginx版本数     字,这样对于安全性是有好处的。
      sendfile on;                 # 开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载
      tcp_nopush on;           # 必须在sendfile开启模式才有效,防止网路阻塞,积极的减少网络报文段的数量(将响应头和正文的开始部分一起发送,而不一个接一个的发送。)
      tcp_nodelay on;          #告诉nginx不要缓存数据,而是一段一段的发送--当需要及时发送数据时,就应该给应用设置这个属性,这样发送一小块数据信息时就不能立即得到返回值。
      #日志存储
      access_log off;             # 设置nginx是否将存储访问日志。关闭这个选项可以让读取磁盘IO操作更快(aka,YOLO)
      error_log /var/log/nginx/error.log crit;  # 告诉nginx只能记录严重的错误
      #连接超时设置
      keepalive_timeout 10;     # 给客户端分配keep-alive链接超时时间。服务器将在这个超时时间过后关闭链接。我们将它设置低些可以让ngnix持续工作的时间更长。
      client_header_timeout 10;  # 设置请求头的超时时间
      client_body_timeout 10;     # 设置请求头的超时时间
      reset_timedout_connection on;     # 告诉nginx关闭不响应的客户端连接。这将会释放那个客户端所占有的内存空间
      send_timeout 10;     # 指定客户端的响应超时时间。这个设置不会用于整个转发器,而是在两次客户端读取操作之间。如果在这段时间内,客户端没有读取任何数据,nginx就会关闭连接。
      limit_conn_zone $binary_remote_addr zone=addr:5m;     # 设置用于保存各种key(比如当前连接数)的共享内存的参数。5m就是5兆字节,这个值应该被设置的足够大以存储(32K*5)32byte状态或者(16K*5)64byte状态。
      limit_conn addr 100;     # 为给定的key设置最大连接数。这里key是addr,我们设置的值是100,也就是说我们允许每一个IP地址最多同时打开有100个连接。
      # gzip压缩
      gzip on;  # Nginx启用压缩功能需要安装ngx_http_gzip_module模块
      gzip_disable "msie6";     # 为指定的客户端禁用gzip功能。我们设置成IE6或者更低版本以使我们的方案能够广泛兼容。
      gzip_static on;          #  告诉nginx在压缩资源之前,先查找是否有预先gzip处理过的资源
      gzip_proxied any;            # 允许或者禁止压缩基于请求和响应的响应流。我们设置为any,意味着将会压缩所有的请求
      gzip_min_length 1000;     # 设置对数据启用压缩的最少字节数
      gzip_comp_level 6;             # 设置数据的压缩等级。
      gzip_types  text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;  # 设置需要压缩的数据格式
      #缓存
      open_file_cache max=100000 inactive=20s;         # 打开缓存的同时也指定了缓存最大数目,以及缓存的时间。默认不启用
      open_file_cache_valid 30s;                 # 在open_file_cache中指定检测正确信息的间隔时间。
      open_file_cache_min_uses 2;                 # 定义了open_file_cache中指令参数不活动时间期间里最小的文件数。
      open_file_cache_errors on;         # 指定了当搜索一个文件时是否缓存错误信息,也包括再次给配置中添加文件
      #加载server配置
      include vhost/default.conf
      include vhost/*.conf
}
2、server块
server {
        listen       80 default_server ;   #加了default_server标识默认虚拟主机
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location / { # /表示根目录,该配置表示Nginx默认打开/www下的index.html
            root   /www;  #根目录,该配置表示Nginx默认打开/www
            index  index.html index.htm; #若index.html 不存在,则打开index.htm
        }
        #添加jeeCms代理 npl 20160920
        location /jeeCms/ { # 过滤形如localhost:80/jeeCms/的url
            proxy_pass [http://192.168.2.8:8070/jeeCms/;#](http://192.168.2.8:8070/jeeCms/;#)转发至形如[http://192.168.2.8:8070/jeeCms/](http://192.168.2.8:8070/jeeCms/)的地址
                proxy_redirect off; # 关闭重定向
                proxy_set_header Host $host:$server_port;            
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
            #添加ctp-war代理 npl 20160920
        location /ctp-war/ {# 过滤形如localhost:80/ctp-war/的url
            proxy_pass [http://192.168.2.8:8020/ctp-war/;](http://192.168.2.8:8020/ctp-war/;) #转发至形如[http://192.168.2.8:8070/ctp-war/](http://192.168.2.8:8070/ctp-war/)的地址
                proxy_redirect off;# 关闭重定向
                proxy_set_header Host $host:$server_port;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容