• Nginx配置文件


    目录

    全局块

    events块

    http块

    定义MIME-Type

    自定义服务日志

    其他配置指令

    server块和location块


    我们知道Nginx的核心配置文件默认是放 在/usr/local/nginx/conf/nginx.conf,这一节,我们就来学习下 nginx.conf的内容和基本配置方法。

    我们先把其中的注释部分全部去掉,就只剩如下内容:

    1. worker_processes auto;
    2. events {
    3. worker_connections 1024;
    4. }
    5. http {
    6. include /etc/nginx/mime.types;
    7. default_type application/octet-stream;
    8. sendfile on;
    9. keepalive_timeout 65;
    10. server {
    11. listen 80;
    12. server_name localhost;
    13. location / {
    14. root html;
    15. index index.html index.htm;
    16. }
    17. error_page 500 502 503 504 /50x.html;
    18. location = /50x.html {
    19. root html;
    20. }
    21. }
    22. include /etc/nginx/conf.d/*.conf;
    23. }
    1. 指令名 指令值; #全局块:主要设置nginx整体运行的配置指令
    2. #events块,主要设置,Nginx服务器与用户的网络连接,这一部分对Nginx服务器的性能影响较大
    3. events{
    4. 指令名 指令值;
    5. }
    6. #http块,是Nginx服务器配置中的重要部分,代理、缓存、日志记录、第三方模块配置...
    7. https{
    8. 指令名 指令值;
    9. #server块,是Nginx配置和虚拟主机相关的内容(可以配置多个)
    10. server{
    11. 指令名 指令值:
    12. #location块,基于Nginx服务器接收请求字符串与location后面的值进行匹配,对特定请求进行处理(可以配置多个)
    13. location /{
    14. 指令名 指令值:
    15. }
    16. }
    17. #从指定路径下的配置文件引入server块
    18. include ...;
    19. }

    简单小结下:

    • nginx.conf配置文件中默认有三大块:全局块、events块、http块
    • http块中可以配置多个server块,每个server块又可以配置多个location 块。

    全局块

    user指令

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

     

    使用user指令可以指定启动运行工作进程的用户及用户组, 这样对于系统的权限访问控制的更加精细,也更加安全。

    work process指令 

    worker_processes:用于配置Nginx生成工作进程的数量,这个是Nginx 服务器实现并发处理服务的关键所在。理论上来说workder process的 值越大,可以支持的并发处理量也越多,但事实上这个值的设定是需要 受到来自服务器自身的限制,建议将该值和服务器CPU的内核数保存一 致。

     

    其它指令

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

     pid:用来配置Nginx当前master进程的进程号ID存储的文件路径。

     

    error_log:用来配置Nginx的错误日志存放路径。

    其中日志级别的值有: debug|info|notice|warn|error|crit|alert|emerg,翻译过来为试|信 息|通知|警告|错误|临界|警报|紧急,这块建议大家设置的时候不要设 置成info以下的等级,因为会带来大量的磁盘I/O消耗,影响Nginx的性 能。

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

     

    events块

    accept_mutex:用来设置Nginx网络连接序列化

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

    multi_accept:用来设置是否允许同时接收多个网络连接

    如果multi_accept被禁止了,nginx一个工作进程只能同时接受一个新的 连接。否则,一个工作进程可以同时接受所有的新连接 

    worker_connections:用来配置单个worker进程最大的连接数

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

    use:用来设置Nginx服务器选择哪种事件驱动来处理网络消息。

    注意:此处所选择事件处理模型是Nginx优化部分的一个重要内容, method的可选值有select/poll/epoll/kqueue等,之前在准备centos环 境的时候,我们强调过要使用linux内核在2.6以上,就是为了能使用 epoll函数来优化Nginx。

    http块

    定义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. #这里也可以设置成text/plain
    3. default_type text/html;
    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中日志的类型分access.log、error.log。

    access.log:用来记录用户所有的访问请求。

    error.log:记录nginx本身运行时的错误信息,不会记录用户的访问请 求。

    Nginx服务器支持对服务日志的格式、大小、输出等进行设置,需要使 用到两个指令,分别是access_log和log_format指令。

    access_log:用来设置用户访问日志的相关属性。

    log_format:用来指定日志的输出格式。

     

    其他配置指令

    sendfile:用来设置Nginx服务器是否使用sendfile()传输文件,该属 性可以大大提高Nginx处理静态资源的性能

     

    keepalive_timeout:用来设置长连接的超时时间。

    为什么要使用keepalive?

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

    keepalive_requests:用来设置一个keep-alive连接使用的次数。

    server块和location块

    server块和location块都是我们要重点讲解和学习的内容,因为我们后面会对Nginx的功能进行详细讲解,所以这块内容就放到静态资源部署的地方给大家详细说明。 

     

  • 相关阅读:
    腾讯云CVM服务器5年可选2核4G和4核8G配置
    【颠覆旧知识】JS的原型链搜索原则;
    NVR新版界面看回放时音频功能如何开启
    JAVA计算机毕业设计动物在线领养网站Mybatis+系统+数据库+调试部署
    ExtJS - ExtJS最佳实践
    松哥手把手教你在 Vue3 中自定义插件
    Java开发学习----SpringMVC设置请求映射路径
    内网渗透之Linux反弹shell(综合)
    盘点30个Python树莓派源码Python爱好者不容错过
    几种研发管理流程
  • 原文地址:https://blog.csdn.net/weixin_56644618/article/details/127702029