当前位置: 首页 > article >正文

Nginx常用配置详解(1)

Nginx常用配置详解

在这里插入图片描述

一、全局块(main)配置

在Nginx的配置文件中,最外层的部分是全局块。这部分配置通常会影响Nginx服务器整体的运行参数。

  1. worker_processes
    • 作用:这个配置指令用于指定Nginx工作进程的数量。工作进程是Nginx处理客户端请求的核心部分。例如,设置worker_processes 4;表示Nginx会启动4个工作进程来处理请求。合理设置工作进程数量可以充分利用服务器的多核CPU资源。一般来说,如果服务器是多核CPU,将其设置为CPU核心数可以获得较好的性能。
  2. error_log
    • 作用:用于指定Nginx错误日志的存放路径和日志级别。例如,error_log /var/log/nginx/error.log;将错误日志存储在/var/log/nginx/目录下的error.log文件中。日志级别可以是debuginfonoticewarnerror等。debug级别记录最详细的信息,包括调试信息等,但会产生大量日志文件;error级别只记录错误信息,用于排查严重问题。

二、http块配置

http块包含了服务器处理HTTP相关的配置,这是Nginx配置的核心部分之一。

  1. server
    • 作用:一个server块定义了一个虚拟服务器。在一台Nginx服务器上可以配置多个虚拟服务器,以分别处理不同域名或IP地址的请求。
    • 示例配置
      server {
          listen       80;
          server_name  example.com;
          root         /var/www/html;
      }
      
      • listen:指定服务器监听的端口号,这里是80端口,这是HTTP协议的默认端口。也可以指定IP地址和端口的组合,如listen 192.168.1.100:8080;表示只监听指定IP地址的8080端口。
      • server_name:定义服务器名称,即域名。当客户端请求的域名与server_name匹配时,Nginx会将请求路由到这个server块进行处理。可以设置多个域名,中间用空格隔开,如server_name example.com www.example.com;,这样这两个域名的请求都会被该server块处理。
      • root:指定了服务器的根目录,也就是当客户端请求一个相对路径时,Nginx会从这个根目录下查找对应的文件。例如,客户端请求http://example.com/index.html,Nginx会在/var/www/html目录下查找index.html文件。
  2. location
    • 作用:用于基于请求的URI(统一资源标识符)来匹配请求,并对匹配的请求进行特定的处理。location块可以嵌套在server块内部。
    • 示例配置
      location / {
          try_files $uri $uri/ =404;
      }
      
      • try_files:这条指令用于按顺序尝试查找文件。$uri表示请求的URI路径,$uri/表示在请求路径后添加一个斜杠后的路径。=404表示如果前面的文件都找不到,就返回404错误。例如,当客户端请求http://example.com/about.html时,Nginx会先尝试查找/var/www/html/about.html文件,如果不存在,再尝试查找/var/www/html/about.html/目录下的默认文件(如index.html),如果还是找不到就返回404错误。
    • 不同类型的location匹配规则
      • 精确匹配:使用=前缀,如location = /login.html {... },这种情况下只有当请求的URI完全等于/login.html时才会匹配。
      • 前缀匹配:这是最常用的匹配方式,没有前缀符号。例如location /images/ {... }会匹配以/images/开头的所有请求,如/images/logo.png/images/subdir/file.txt等。
      • 正则表达式匹配:使用~(区分大小写)或~*(不区分大小写)前缀。例如location ~ \.php$ {... }会匹配所有以.php结尾的请求,用于将PHP请求转发到后端的PHP - FPM服务器进行处理。

三、其他常用配置

  1. access_log
    • 作用:用于记录客户端访问日志。例如,access_log /var/log/nginx/access.log main;将访问日志存储在/var/log/nginx/access.log文件中,main是日志格式的名称。可以自定义日志格式来记录更多有用的信息,如客户端IP地址、请求时间、请求方法、请求的URI等。
  2. sendfile
    • 作用:这个配置指令用于启用或禁用Nginx的sendfile功能。sendfile可以在将文件发送给客户端时,直接从内核缓冲区复制数据到网络缓冲区,减少了数据在内核空间和用户空间之间的拷贝次数,从而提高文件传输的效率。设置sendfile on;开启这个功能,默认情况下通常是开启的。
  3. keepalive_timeout
    • 作用:用于设置和客户端的长连接超时时间。例如,keepalive_timeout 65;表示Nginx在65秒内没有收到客户端的新请求,就会关闭连接。长连接可以减少建立和关闭连接的开销,提高服务器性能,尤其在处理多个请求来自同一个客户端的场景下非常有用。

http://www.kler.cn/a/443684.html

相关文章:

  • dns一般设置为多少
  • 保护模式基本概念
  • springboot/ssm私房菜定制上门服务系统Java代码编写web厨师上门做菜
  • 实践KDTS-WEB从mysql迁移到kingbasev9
  • 【Mysql】truncate 和 delete的区别
  • 苏黎世联邦理工学院与加州大学伯克利分校推出MaxInfoRL:平衡内在与外在探索的全新强化学习框架
  • upload-labs靶场1-19关
  • 【信息系统项目管理师-论文真题】2017下半年论文详解(包括解题思路和写作要点)
  • AUTOSAR OS 中Alarm 和 Event 本质和应用
  • 【WebRTC】视频发送链路中类的简单分析(上)
  • 【Golang】 Go 语言中的 Struct、JSON 和 Map 互转:详细指南
  • CTF知识集-PHP特性
  • NFTScan | 12.09~12.15 NFT 市场热点汇总
  • [NSSCTF 2022 Spring Recruit]factor
  • 对于给定PI参数的锁相环带宽简单计算方法
  • REST模式是什么,以及其他架构风格
  • 大模型中RAG模型的检索过程是如何实现的?(附最佳实践资料)
  • 唯品会C++面试题及参考答案
  • 设计模式-行为型模式
  • 企业如何通过TDSQL实现高效数据库迁移与性能优化
  • windows使用python写的YOLO来实现目标识别
  • CRC校验例题详解
  • 页面无滚动条,里面div各自有滚动条
  • Redis 7.x哨兵模式如何实现?基于Spring Boot 3.x版
  • 【uniapp蓝牙】基于native.js链接ble和非ble蓝牙
  • 前端如何做缓存处理?