环境:centos7  nginx1.16.1

以下配置均在配置文件中进行:/etc/nginx/nginx.conf

1.设置工作进程的所有者和所属组

  user  所有者  所属组;  

  设置后要在操作系统中设置该用户和用户组

  /usr/sbin/groupadd  www    /usr/sbin/useradd -g www www

2. 网络连接事件模型设置 

  event{

accept_mutex on;    #设置网路连接序列化,防止惊群现象发生,默认为on

multi_accept on;    #设置一个进程是否同时接受多个网络连接,默认为off

worker_connections  1024;    #每个工作进程的最大连接数,默认为512

       use epoll;     #参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];

  }

3. 服务器返回文件的MIME类型设置

  include  mime.types;  #引入的mime.types文件用来帮助http协议判断网页文件的MIME类型,该项作用域 http  server

    mime.types文件:文件扩展名与文件类型映射表  服务器根据mime.types文件,由网页文件扩展名得到其MIME类型,并加在响应头中发送给浏览器

  default_type  application/octet-stream  #当文件类型未定义时,默认返回的MIME类型。作用域为 location  http

    注意:图片,音频,视频等文件要在html文件才能被浏览器展示和播放,但如果不设置default_type  application/octet-stream 这一项,服务器直接返回MIME类型为

    image/jpeg ,audio/mp4...的响应头,浏览器不会有任何动作,设置此类文件为二进制流后,浏览器接受到该响应头,会产生一个下载窗口,从而在客户端获取服务器文件

    设置MIME类型为application/octet-stream(二进制流文件,浏览器打开会出现下载)

4. 客户端相关配置

  client_max_body_size 10m; #客户端请求服务器时发送的请求主体最大容量。该配置项作用域http,server,location 。值为0,则不受限制

  client_header_buffer_size 32k; #用于指定来自客户端请求头缓冲区大小,对于大多数请求,1KB的缓冲区大小已经足够,如果自定义了消息头或有更大的cookie,可以增加缓冲区大小。

  large_client_header_buffers 4 64k; #设置客户端请求头的缓冲区的最大数目和大小。请求行不能超过一个缓冲区的大小,请求头字段也不能超过一个缓冲区的大小。缓冲区仅按需分配。

  默认情况下,缓冲区大小等于8K字节。如果在请求处理结束后,连接转换为keep alive状态,则释放这些缓冲区。

  client_body_temp_path  filename [level1] [level2 ] [lever3 ];  #设定服务器用于存储客户端请求报body部分的临时存储路径及子目录结构和数量

    level1:一级目录个数,1表示目录数不超过1位16进制数,故最大值为16

    level2:二级目录个数,2表示目录数不超过2位16进制数,故最大值为16*16=256

    level3:三级目录个数

  client_body_buffer_size  32k;  #设定服务器用于接收每个客户端请求报文的body部分的缓冲区大小;默认为16k;

5. 文件传输方式设置

  sendfile  on;  #以sendfile方式传输文件,默认开启。作用域:http  location  server

    指定是否使用sendfile系统调用来传输文件。sendfile系统调用在两个文件描述符之间直接传递数据(完全在内核中操作),

    从而避免了数据在内核缓冲区和用户缓冲区之间的拷贝,操作效率很高,被称之为零拷贝。

    传统文件传输方式:read,write/send 步骤如下: 

    1. 调用read函数,文件数据拷贝到内核缓冲区
    2. read函数返回,数据从内核缓冲区拷贝到用户缓冲区
    3. 调用write/send函数,将数据从用户缓冲区拷贝到内核socket缓冲区
    4. 数据从内核socket缓冲区拷贝到协议引擎中

      在这个过程当中,文件数据实际上是经过了四次拷贝操作:
      硬盘—>内核缓冲区—>用户缓冲区—>内核socket缓冲区—>协议引擎

    sendfile传输方式:

      1. sendfile系统调用利用DMA引擎将文件数据拷贝到内核缓冲区,之后数据被拷贝到内核socket缓冲区中

      2. DMA引擎将数据从内核socket缓冲区拷贝到协议引擎中

      硬盘—>内核缓冲区—>内核socket缓冲区—>协议引擎

  sendfile_max_chunk 100k;  #每个进程调用sendfile传输数据的最大值
6. 设置超时
  a.  nginx与客户端的超时设置
  (1)客户端请求头超时时间
    client_header_timeout  60s; #一次TCP连接中,nginx服务器接收到客户端一个完整请求头的最长时间,超过则断开tcp连接,并返回408
  (2)客户端请求体超时时间
    client_body_timeout  60s;  #一次TCP连接中,nginx服务器接收到客户端一个完整请求体的最长时间,超过则断开tcp连接,并返回408
  (3)send_timeout  60s;     #一次TCP连接中,2次向客户端发送响应报文的间隔最大时间,超过这个时间则断开TCP连接
  b.  nginx与代理服务器的超时设置
   proxy_connect_timeout 65s;  #默认60s,不能超过75秒,发起握手到等候响应的时间(建立请求的时间)

   proxy_read_timeout  60s;  #建立tcp连接后,等候服务器响应的时间(处理请求的时间),大于这个时间则断开连接
   proxy_send_timeout 60s;  #upstream服务器从开始响应到响应结束的时间,大于这个时间则断开连接
   server  主机地址  [fail_timeout=30]  [max_fails=1]; #可选项不写则默认 10s  1, 作用域upstream
   在fail_timeout时间内,某个server连接失败了max_fails次,则认为这个主机不工作了,并在接下来的 fail_timeout时间内,nginx不再将请求分发给失效的server
  c.其它超时设置
  (1)设置延迟关闭连接时间
    lingering_timeout  5s;  #默认值5s,作用域 http serverr location。在关闭连接前,会检测是否有用户发送的数据到达服务器,
    如果超过lingering_timeout时间后还没有数据可读,就直接关闭连接;否则,必须在读取完连接缓冲区上的数据并丢弃掉后才会关闭连接。
  (2)设置DNS解析超时时间
    resolver_timeout  5s;    #默认值30s
  (3)设置长连接的时间
    keepalive_timeout 65s;    #一个http请求完成之后,保持TCP连接的时长,默认75s
  (4)504 Gateway Time-out     
      一般看来, 这种情况可能是由于nginx默认的fastcgi进程响应的缓冲区太小造成的, 这将导致fastcgi进程被挂起, 如果你的fastcgi服务对这个挂起处理的不好,
    那么最后就极有可能导致504 Gateway Time-out。现在的网站, 尤其某些论坛有大量的回复和很多内容的, 一个页面甚至有几百K默认的fastcgi进程响应的缓冲区是8K,
    我们可以设置大点在nginx.conf里, 加入:fastcgi_buffers 8 128k 这表示设置fastcgi缓冲区为8×128k,当然如果您在进行某一项即时的操作, 可能需要nginx的超时参数调大点,
    例如设置成60秒: send_timeout 60;
   (  
7. 长连接配置
  (1)一次长连接的请求数
  keepalive_requests 60;  #一次tcp连接中,服务器接收请求的最大次数,超过则关闭连接
  (2)浏览器长连接设置
  keepalive_disable none | 浏览器名; #对哪种浏览器禁用长连接,none表示所有浏览器都开启
    Mozilla--火狐  Opera--欧鹏 MSIE--IE浏览器
8. 错误页配置
  error_page 404 [200]  https://www.baidu.com;  #发生404错误时显示的页面。作用域server  location http 
  可选参数为发生错误时,返回给客户端的状态码,防止返回404后页面被劫持
  
9. 引入配置文件
  include 文件名;  #引入额外配置文件到主配置文件。作用域 http
  
10. TCP相关设置
  tcp_nodelay  on | off;  #请求是否延迟发送。作用域http server  location
  当为off时,延迟发送,合并多个请求后再发送,凑齐多个请求后在发送给后台处理,但是这个情况可能会导致客户端等待,会比较慢,所以一般是不延迟发送,默认on时,不延迟发送
  tcp_nopush on;     #防止网络阻塞
 
11. 监听端口设置
  listen address[:port] [default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [ssl] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];    #监听的主机及端口,不写端口默认80,网络数据都是通过该监听的端口传输

   address   监听的主机,即web服务主机

   default_server  该虚拟主机设定为默认虚拟主机

   ssl    限制仅能够通过ssl连接提供服务,即只能以https访问

   backlog=number   超过并发连接数后,新请求进入后援队列的长度

   rcvbuf=size      接收缓冲区大小

   sndbuf=size           发送缓冲区大小

 
12. 响应报文的设置
  server_tokens  on | off | build | string;  #是否在响应报文的首部显示nginx版本,默认是on,建议设置为off,隐藏版本号
 
13. 
 
 
 

nginx.conf配置项的更多相关文章

  1. CentOS下配置nginx conf/koi-win为同一文件的各类错误

    今天配置CentOS6.5下安装Nginx + php7 + mysql5.7.15遇到了一些坑.本来家里的电脑在配置环境的时候没有问题,拿去公司的电脑上就是到处报错.不知道是不是人品问题.今晚在家重 ...

  2. Nginx的配置文件(nginx.conf)解析和领读官网

    步骤一:vi nginx.conf配置文件,参考本博文的最下面总结,自行去设置 最后nginx.conf内容为 步骤二:每次修改了nginx.conf配置文件后,都要reload下. index.ht ...

  3. nginx系列 3 nginx.conf介绍(1)

    一. nginx.conf 文件结构概述 在第一篇中讲到nginx的安装,安装完后,默认的nginx服务器配置文件都存在安装目录conf中,主配置文件名为nginx.conf.下面是我linux系统安 ...

  4. nginx作为web服务以及nginx.conf详解

    Nginx系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1.nginx简介 nginx是一个优秀的web服务程序.反向代理程序.它采用非 ...

  5. nginx重要配置项简要说明

    1.重要配置项 以下是一个完整的nginx配置信息. #================================以下是全局配置项 #指定运行nginx的用户和用户组,默认情况下该选项关闭(关闭 ...

  6. nginx.conf的完整配置说明

    #用户 用户组 user www www; #工作进程,根据硬件调整,有人说几核cpu,就配几个,我觉得可以多一点 worker_processes 5: #错误日志 error_log logs/e ...

  7. Nginx配置文件nginx.conf中文详解(转)

    ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...

  8. <nginx.conf> nginx用户权限

    Nginx用户权限 在nginx.conf文件的第一行一般是设置用户的地方(编译安装nginx时的参数--user=<user>也是指定用户的地方),如 user www www; 如不指 ...

  9. nginx.conf中配置laravel框架站点

    nginx.conf配置如下: user nginx nginx;worker_processes 4; error_log logs/error.log error; pid logs/nginx. ...

随机推荐

  1. PATB1031查验身份证

    这一题遇见的错误有很多,学会了一些知识点 使用了strcpy函数,前是需要复制的数组,后面是被复制的数组 关于字符,如果是非数字可以使用 <='9' && >='0'来判断 ...

  2. Python内置函数---ord()

    描述: ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCI ...

  3. swig包里面没有找到swig.exe

    问题关键词: swig.exe找不到 swig.exe不存在 windows如何编译swig.exe windows如何生成swig.exe SWIG简单介绍: SWIG(http://www.swi ...

  4. thinkphp5用了哪些设计模式

    一.设计模式简介 首先我们来认识一下什么是设计模式:设计模式是一套被反复使用.容易被他人理解的.可靠的代码设计经验的总结.设计模式不是Java的专利,我们用面向对象的方法在PHP里也能很好的使用23种 ...

  5. vivado sdx 綜合報錯ERROR: [SdsCompiler 83-5019] Exiting sds++ : Error when calling 'aarch64-linux-gnu-g++ -c

    ERROR: [SdsCompiler 83-5019] Exiting sds++ : Error when calling 'aarch64-linux-gnu-g++ -c 主函數 添加 頭文件 ...

  6. Tomcat安装及配置(Linux系统)

    环境说明:Linux环境,CentOS 7版本. 第一步:下载tomcat 版本,下载地址:https://tomcat.apache.org/index.html 我用的是zip结尾的包 解压命令: ...

  7. 【题解】Luogu P2447 [SDOI2010]外星千足虫

    原题传送门 根据题意,题目给的每个操作就相当于异或上选中的那几只虫子的足数(mod 2)等于0/1 这是一个异或方程组,珂以用高斯消元解出每个虫子的足数(mod 2).所需最小次数或判断有多解 但是看 ...

  8. FusionInsight大数据开发---Oozie应用开发

    Oozie应用开发 要求: 了解Oozie应用开发适用场景 掌握Oozie应用开发 熟悉并使用Oozie常用API Oozie简介 Oozie是一个Hadoop作业的工作流调度管理系统 Oozie工作 ...

  9. TestNG系列(四)TestNG监听器

    前言 监听器实际上是一些预定义的java接口,用户创建这些接口的实现类(即implements某监听接口,并实现里面的方法),并加入到testng中,testng便会在运行的不同时刻调用这些类中你自定 ...

  10. k8s-架构中各个组件介绍

    参考链接:https://github.com/opsnull/follow-me-install-kubernetes-cluster kubernetes 概述 1.kubernetes 是什么 ...