nginx 常用指令配置总结

饭宝  金牌会员 | 2022-6-26 12:40:21 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 576|帖子 576|积分 1728

前言

  熟悉nginx的同学应该了解,nginx.conf 配置文件中默认有三大块:全局块、 events 块、 http 块 ,http块中可以配置多个 server 块,每个 server 块又可以配置多个 location块。   本篇对nginx.conf配置文件中的常用指令块做一个较详细的介绍。   全局块


1、user指令



     user:  用于配置运行  Nginx  服务器的  worker  进程的用户和用户组   

 
  该属性也可以在编译的时候指定,语法如下 ./configure  -- user=user --group=group  , 如果两个地方都进行了设置,最终生效的是配置文件中的配置。    指令使用目的
     使用  user  指令可以指定启动运行工作进程的用户及用户组, 这样对于系统的权限访问控制的更加精细,也更加安全   
2、work process指令


 
  正常情况下,当开启nginx服务后,使用ps命令可以看到当前有两个进程    


  • 其中master_process : 用来指定是否开启工作进程
  •       worker_processes:   用于配置   Nginx   生成工作进程的数量,这个是   Nginx 服务器实现并发处理服务的关键所在。理论上来说workder process   的值越大,可以支持的并发处理量也越多,但事实上这个值的设定是需要 受到来自服务器自身的限制,建议将该值和服务器CPU   的内核数保存一 致。
    
    
     如果将  worker_processes  设置成  2  ,则会看到如下内容  :          
3、daemon指令

           设定   Nginx   是否以守护进程的方式启动           守护式进程是  linux  后台执行的一种服务进程,特点是独立于控制终端,不会随着终端关闭而停止             
   4、pid指令

          用来配置   Nginx   当前   master   进程的进程号   ID   存储的文件路径。          
     该属性可以通过  ./configure   --  pid  -  path=PATH  来指定         5、error_log

  
        用来配置   Nginx   的错误日志存放路径              
        该属性可以通过   ./configure    --   error   -   log   -   path=PATH   来指定                   其中日志级别的值有:                debug|info|notice|warn|error|crit|alert|emerg    ,翻译过来为试    |    信息|    通知    |    警告    |    错误    |    临界    |    警报    |    紧急,建议大家设置的时不要设置成info    以下等级,会带来大量的磁盘    I/O    消耗,影响    Nginx    性能;                   6、include

                     用来引入其他配置文件,使      Nginx      的配置更加灵活                                  
    events

   
     
    events块中可配置的指令包括如下,分别做说明
   
    1、accept_mutex

   
         用来设置Nginx网络连接序列化
        
     
        这个配置主要可以用来解决常说的    "    惊群    "    问题。大致意思是在某一个时 刻,客户端发来一个请求连接,Nginx    后台是以多进程的工作模式,也就是说有多个worker    进程会被同时唤醒,但是最终只会有一个进程可以获取到连接,如果每次唤醒的进程数目太多,就会影响Nginx    的整体性能。如果将上述值设置为on(    开启状态    )    ,将会对多个    Nginx    进程接收连接进行序列号,一个个来唤醒接收,就防止了多个进程对连接的争抢;               2、multi_accept

         用来设置是否允许同时接收多个网络连接
        
        如果    multi_accept    被禁止了,    nginx    一个工作进程只能同时接受一个新的连接。否则,一个工作进程可以同时接受所有的新连接;           
     3、worker_connections

         用来配置单个worker进程最大的连接数
        
        这里的连接数不仅仅包括和前端用户建立的连接数,而是包括所有可能的连接数。另外,number    值不能大于操作系统支持打开的最大文件句柄数量。                4、user

              用来设置     Nginx     服务器选择哪种事件驱动来处理网络消息            
        注意:此处所选择事件处理模型是    Nginx    优化部分的一个重要内容,method的可选值有    select/poll/epoll/kqueue    等,之前在准备    centos    环境的时候,我们强调过要使用linux    内核在    2.6    以上,就是为了能使用epoll函数来优化    Nginx    。      
        另外下面这些值也可以在编译的时候选择使用:               --    with    -    select_module    、    --    without    -    select_module    、--with    -    poll_module    、    --    without    -    poll_module    来设置是否需要将对应的事件驱动模块编译到Nginx    的内核;                   events    指令配置实例               
  1. events {
  2.      accept_mutex on;
  3.      multi_accept on;
  4.      worker_commections 1024;
  5.      use epoll;
  6. }
复制代码
   
     http

     
     http模块是nginx.conf配置文件中最重要的部分,日常开发中最重要的的配置几乎都是在这个模块中进行的;
     
     1、定义MIME-Type

     
                 我们都知道浏览器中可以显示的内容有      HTML      、      XML      、      GIF      等种类繁多的文件、媒体等资源,浏览器为了区分这些资源,就需要使用MIME Type。所以说      MIME Type      是网络资源的媒体类型。      Nginx      作为      web      服务器,也需要能够识别前端请求的资源类型;                                    在     Nginx     的配置文件中,默认有两行配置                                       include mime.types;                     default_type application/octet-stream;                                         
         default_type

                             用来配置      Nginx      响应前端请求默认的      MIME      类型。                  
     在default_type之前还有一句include mime.types ,include之前我们已经介绍过,相当于把mime.types文件中MIMT类型与相关类型文件的文件后缀名的对应关系加入到当前的配置文件中;
   
    举例说明:
        有些时候请求某些接口的时候需要返回指定的文本字符串或者    json    字符串,如果逻辑非常简单或者干脆是固定的字符串,那么可以使用nginx    快速实现,这样就不用编写程序响应请求了,可以减少服务器资源占用并且响应性能非常快。                   配置实现如下:         
  1. location /get_text {
  2.         #这里也可以设置成
  3.         default_type text/plain;
  4.         return 200 "This is nginx's text";
  5. }
  6. location /get_json {
  7.         default_type application/json;
  8.         return 200 '{"name":"TOM","age":18}';
  9. }
复制代码
   配置完毕后,重启nginx,浏览器分别访问上面两个路径,均能满足预期的效果
   
     
     2、自定义服务日志

   
        Nginx    中日志的类型分    access.log    、    error.log               

  • access.log:用来记录用户所有的访问请求
  • error.log:记录nginx本身运行时的错误信息,不会记录用户的访问请求
                Nginx      服务器支持对服务日志的格式、大小、输出等进行设置,需要使用到两个指令,分别是access_log      和      log_format      指令。               
     access_log

     
      
                      用来设置用户访问日志的相关属性               
                log_format

                      用来指定日志的输出格式               
      
     其他配置指令

     
     1、 sendfifile

                 用来设置      Nginx      服务器是否使用      sendfifile()      传输文件,该属性可以大大提高Nginx      处理静态资源的性能               
      2、keepalive_timeout
           用来设置长连接的超时时间
           
      3、keepalive_requests
           用来设置一个keep-alive连接使用的次数
         
      
     补充说明:为什么要使用keepalive?
     

  • 我们都知道HTTP是一种无状态协议,客户端向服务端发送一个TCP请求,服务端响应完毕后断开连接;
  • 如何客户端向服务端发送多个请求,每个请求都需要重新创建一次连接,效率相对来说比较多,使用keepalive模式,可以告诉服务器端在处理完 一个请求后保持这个TCP连接的打开状态;
  • 若接收到来自这个客户端的其 他请求,服务端就会利用这个未被关闭的连接,而不需要重新创建一个新 连接,提升效率;
  • 但是这个连接也不能一直保持,这样的话,连接如果过 多,也会是服务端的性能下降,这个时候就需要我们进行设置其的超时时间;
   
     
     
     
     
                  
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
                                             











免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

饭宝

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表