饭宝 发表于 2022-6-26 12:40:21

nginx 常用指令配置总结

前言

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


1、user指令

https://img-blog.csdnimg.cn/162add20367742f596e062823d6085f2.png

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

https://img-blog.csdnimg.cn/9eaaa0de88774417a890354dce68df02.png
 
正常情况下,当开启nginx服务后,使用ps命令可以看到当前有两个进程https://img-blog.csdnimg.cn/806f04445c734dd8907b71c00bc90db3.png  


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

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

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


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

                     用来引入其他配置文件,使      Nginx      的配置更加灵活                        https://img-blog.csdnimg.cn/9f69709917154b90966f6a3db1fe0690.png        
    events块

    https://img-blog.csdnimg.cn/3396170a616f41aaaa9cc3a658bfbe1d.png
     
    events块中可配置的指令包括如下,分别做说明
   
    1、accept_mutex

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

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

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

            用来设置   Nginx   服务器选择哪种事件驱动来处理网络消息            https://img-blog.csdnimg.cn/127e4168b58746e5ad0ae7700d6ef32d.png
      注意:此处所选择事件处理模型是    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    指令配置实例                events {

   accept_mutex on;
   multi_accept on;
   worker_commections 1024;
   use epoll;

}   
   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;                                 https://img-blog.csdnimg.cn/e11e003a28af49e78e3f9191709220fc.png        
         default_type

                           用来配置      Nginx      响应前端请求默认的      MIME      类型。                   https://img-blog.csdnimg.cn/734b3bf1fc8547aab3e36d73a96040f0.png
     在default_type之前还有一句include mime.types ,include之前我们已经介绍过,相当于把mime.types文件中MIMT类型与相关类型文件的文件后缀名的对应关系加入到当前的配置文件中;
   
    举例说明:
      有些时候请求某些接口的时候需要返回指定的文本字符串或者    json    字符串,如果逻辑非常简单或者干脆是固定的字符串,那么可以使用nginx    快速实现,这样就不用编写程序响应请求了,可以减少服务器资源占用并且响应性能非常快。                   配置实现如下:         location /get_text {

        #这里也可以设置成
        default_type text/plain;
        return 200 "This is nginx's text";
}

location /get_json {

        default_type application/json;
        return 200 '{"name":"TOM","age":18}';

}    配置完毕后,重启nginx,浏览器分别访问上面两个路径,均能满足预期的效果
    https://img-blog.csdnimg.cn/7ff13824ae614638916070db5004470f.png
     https://img-blog.csdnimg.cn/c147401b2c004e23bb2baa3ce4d15f2f.png
     2、自定义服务日志

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

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

   
   https://img-blog.csdnimg.cn/926221a1a15042989346ef48333b5101.png 
                      用来设置用户访问日志的相关属性               https://img-blog.csdnimg.cn/b0834317f9b2418eb46d8092dcd344ff.png
                log_format

                      用来指定日志的输出格式               https://img-blog.csdnimg.cn/01285e205496459fa9d872fa2143bb34.png
    
   其他配置指令

   
   1、 sendfifile

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

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











免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: nginx 常用指令配置总结