浅谈Nginx主配置文件

1️⃣ Nginx配置文件组成部分

  • Nginx的配置⽂件的组成部分: 主配置⽂件:nginx.conf,⼦配置⽂件 include conf.d/*.conf
  • 主配置文件各种配置段的的详细配置选项信息见:http://nginx.org/en/docs/ngx_core_module.html
  • 配置文件的结构:
    • 段:如http{}event{}server{}location{}等,段可以并列,也可以嵌套。
    • 块:指的就是在段里定义的一组directives(配置指令)。
    • directive:指的就是块里的一条条配置指令。指令定义方法:directive value [value2 ...];。
  • 注意:
    (1) 指令必须以分号结尾。
    (2)嵌套的段是有层级结构的,比如http段里,遵循http{}–>server{}–>location{}这种嵌套结构。
    (3) 支持使用配置变量:
    • 内建变量:由Nginx模块引入,可直接引用。
    • 自定义变量:由用户使用set命令定义。
    • 定义变量:set variable_name value;
    • 引用变量:$variable_name

2️⃣ Nginx主配置文件结构

[root@s2 ~]# grep -v "#" /apps/nginx/conf/nginx.conf | grep -v "^$"
# 全局配置端,对全局⽣效,主要设置nginx的启动⽤⼾/组,启动的⼯作进程数量,⼯作模式,Nginx的PID路径,⽇
志路径等。

user nginx nginx;
worker_processes 1; #启动⼯作进程数数量

events { # events设置块,主要影响nginx服务器与⽤⼾的⽹络连接,⽐如是否允许同时接受多个⽹络连接,使⽤哪
种事件驱动模型处理请求,每个⼯作进程可以同时⽀持的最⼤连接数,是否开启对多⼯作进程下的⽹络连接进⾏序列化
等。
worker_connections 1024; #设置单个nginx⼯作进程可以接受的最⼤并发,作为web服务器的时候最
⼤并发数为worker_connections * worker_processes,作为反向代理的时候为(worker_connections *
worker_processes)/2
}

http { #http块是Nginx服务器配置中的重要部分,缓存、代理和⽇志格式定义等绝⼤多数功能和第三⽅模块都可以
在这设置,http块可以包含多个server块,⽽⼀个server块中⼜可以包含多个location块,server块可以配置⽂
件引⼊、MIME-Type定义、⽇志⾃定义、是否启⽤sendfile、连接超时时间和单个链接的请求上限等。
include mime.types;
default_type application/octet-stream;
sendfile on; #作为web服务器的时候打开sendfile加快静态⽂件传输,指定是否使⽤sendfile系
统调⽤来传输⽂件,sendfile系统调⽤在两个⽂件描述符之间直接传递数据(完全在内核中操作),从⽽避免了数据在内
核缓冲区和⽤⼾缓冲区之间的拷⻉,操作效率很⾼,被称之为零拷⻉,硬盘 >> kernel buffer (快速拷⻉到
kernelsocket buffer) >>协议栈。
keepalive_timeout 65; #⻓连接超时时间,单位是秒

server { #设置⼀个虚拟机主机,可以包含⾃⼰的全局快,同时也可以包含多个location模块。⽐如本虚拟机
监听的端⼝、本虚拟机的名称和IP配置,多个server 可以使⽤⼀个端⼝,⽐如都使⽤80端⼝提供web服务、
listen 80; #配置server监听的端⼝
server_name localhost; 本server的名称,当访问此名称的时候nginx会调⽤当前serevr内部的配
置进程匹配。
location / { #location其实是server的⼀个指令,为nginx服务器提供⽐较多⽽且灵活的指令,都是
在location中提现的,主要是基于nginx接受到的请求字符串,对⽤⼾请求的UIL进⾏匹配,并对特定的指令进⾏处
理,包括地址重定向、数据缓存和应答控制等功能都是在这部分实现,另外很多第三⽅模块的配置也是在location模
块中配置。
root html; #相当于默认⻚⾯的⽬录名称,默认是相对路径,可以使⽤绝对路径配置。
index index.html index.htm; #默认的⻚⾯⽂件名称
}
error_page 500 502 503 504 /50x.html; #错误⻚⾯的⽂件名称
location = /50x.html { #location处理对应的不同错误码的⻚⾯定义到/50x.html,这个跟对应其
server中定义的⽬录下。
root html; #定义默认⻚⾯所在的⽬录
}
}

#和邮件相关的配置
#mail {
# ...
# } mail 协议相关配置段
#tcp代理配置,1.9版本以上⽀持
#stream {
# ...
# } stream 服务器相关配置段

#导⼊其他路径的配置⽂件
#include /apps/nginx/conf.d/*.conf
}

3️⃣ Nginx 全局配置

🅿 1.正常运行必备的配置

  • user user [group];
    指定worker进程的运行身份,如组不指定,默认和用户名同名,默认为nobody用户和nobody组

  • pid /PATH/TO/PID_FILE;
    指定存储nginx主进程PID的文件路径,服务关闭时文件消失

  • include file | mask;
    指明包含进来的其它配置文件片断

  • load_module file;
    模块加载配置文件:/usr/share/nginx/modules/*.conf
    指明要装载的动态模块路径: /usr/lib64/nginx/modules

🅿 2.性能优化相关的配置

  • worker_processes number | auto;
    worker进程的数量,通常应该为当前主机的cpu的物理核心数

  • worker_cpu_affinity cpumask...;
    worker_cpu_affinity auto [cpumask] 减少进程切换,提高缓存命中率.
    CPU MASK:以右端为开始从0数起命名CPU,如果启用则该位为1,不启用则该位为0,例如“00101010”代表系统共有8颗CPU,启用第1, 3, 5号CPU
    将Nginx⼯作进程绑定到指定的CPU核⼼,默认Nginx是不进⾏进程绑定的,绑定并不是意味着当前nginx进程独占以⼀核⼼CPU,但是可以保证此进程不会运⾏在其他核⼼上,这就极⼤减少了nginx的⼯作进程在不同的cpu核⼼上的来回跳转,减少了CPU对进程的资源分配与回收以及内存管理等,因此可以有效的提升nginx服务器的性能。

  • 测试:系统共有4颗CPU,现在要求worker进程绑定第0,2颗CPU

vim /etc/nginx/nginx.conf                   / apt安装的默认位置
worker_processes 2;
worker_cpu_affinity 0100 0001;
nginx -s reload
root@ubuntu1804-39:~# ps axo pid,cmd,psr,user | grep nginx  / 查看配置效果
  2185 nginx: master process /usr/   1 root
  2411 nginx: worker process         2 nginx
  2412 nginx: worker process         0 nginx
  2698 grep --color=auto nginx       2 root
  • worker_priority number;
    指定worker进程的nice值,设定worker进程优先级:[-20,20]
  • worker_rlimit_nofile number;
    单个worker进程所能够打开的文件数量上限,如65535
    这个数字包括Nginx的所有连接(例如与代理服务器的连接等),⽽不仅仅是与客⼾端的连接,另⼀个考虑因素是实际的并发连接数不能超过系统级别的最⼤打开⽂件数的限制.

🅿 3.事件驱动相关的配置

  • 格式:
    events {

    }

  • 1.worker_connections number;
    每个worker进程所能够打开的最大并发连接数数量
    总最大并发数:worker_processes* worker_connections

  • 2.use method;
    指明并发连接请求的处理方法,默认自动选择最优方法
    如果系统是Linux,会自动使用epoll方法;如果是FreeBSD和macOS,会自动使用kqueue;如果是Solaris和HP/UX,会自动使用/dev/poll
    有两个普通方法select和poll,已经被淘汰,不做讨论

  • 3.accept_mutex on | off;
    是否接受互斥。
    指的是处理新的连接请求的方法;on指由各个worker轮流处理新请求 ,Off指每个新请求的到达都会通知(唤醒)所有的worker进程,但 只有一个进程可获得连接,造成“惊群”,影响性能,默认on

  • 4.multi_accept on;
    Nginx服务器的每个⼯作进程可以同时接受多个新的⽹络连接,但是需要在配置⽂件中配置,此指令默认为关闭,
    即默认为⼀个⼯作进程只能⼀次接受⼀个新的⽹络连接,打开后⼏个同时接受多个。

🅿 4.调试和定位配置

  • daemon on | off;
    是否以守护进程方式运行nignx,默认是守护进程方式
    前台运⾏Nginx服务⽤于测试、docker等环境

  • master_process on | off;
    是否以master/worker模型运行nginx;默认为on,off 将不启动worker
    仅⽤于开发调试场景

  • error_log file [level];
    错误日志文件及其级别

  • 错误⽇志记录配置,语法:error_log file [debug | info | notice | warn | error | crit | alert | emerg]
    error_log logs/error.log;
    error_log logs/error.log notice;
    error_log /apps/nginx/logs/error.log error


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: nginx配置文件nginx.conf,通常位于 /etc/nginx/nginx.conf 或 /usr/local/nginx/conf/nginx.conf。 下面是一个简单的 nginx.conf 配置文件示例: ``` user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; sendfile on; server { listen 80; server_name example.com; location / { root /var/www/html; index index.html; } } } ``` 其中,user 指定了 nginx 进程运行的用户,worker_processes 指定了 worker 进程的数量,error_log 和 pid 分别指定了错误日志和进程 id 文件的位置。 events 部分用于定义 nginx 的事件处理模型,其中 worker_connections 指定了每个 worker 进程能够同时处理的连接数。 http 部分是 nginx 的 HTTP 服务器配置,包括 MIME 类型、访问日志、静态文件服务等。server 部分定义了一个虚拟机,包括监听的端口、域名、访问控制和请求处理规则等。location 部分用于匹配请求的 URL 路径,并指定相应的处理规则,例如这里将以 / 开头的请求映射到 /var/www/html 目录下的 index.html 文件。 ### 回答2: nginx配置文件是指nginx服务器的配置文件,通常命名为nginx.conf。该文件是一个文本文件,用于指定nginx服务器的全局配置和各个虚拟机(server)的配置。 nginx.conf文件包含了nginx服务器运行的基本设置,如服务器的监听端口、工作进程数、运行用户及群组等。它还可以定义全局的HTTP块和events块,用于设置HTTP服务和事件相关的参数。 在nginx.conf文件中,可以定义多个虚拟机(server)块,每个虚拟机块对应一个域名或IP地址,并配置相应的网站设置。在每个虚拟机块中可以设置网站的根目录、日志文件、错误页面、反向代理等。 除了全局设置和虚拟机配置外,nginx.conf文件还可以包含其他的配置文件,通过include指令可以引入其他配置文件,使得配置文件的管理更加灵活和可扩展。 在修改完nginx.conf文件后,一般需要通过重新加载或重启nginx服务来使配置生效。 总之,nginx配置文件nginx服务器的核心配置文件,其中定义了服务器的全局设置和各个虚拟机的配置,通过修改和管理该文件可以对nginx服务器进行基本配置和定制化设置。 ### 回答3: Nginx配置文件是指Nginx服务器的配置文件,通常为`nginx.conf`。该文件被称为配置文件是因为它包含了Nginx服务器的要配置信息。 Nginx配置文件包含了诸多指令和参数,用于定义Nginx服务器的全局配置、工作进程数、日志记录、服务器块等重要内容。 首先,在配置文件中定义了全局配置指令。这些指令包括运行Nginx服务器的用户、工作进程数、工作模式等。通过设置这些指令,我们可以根据服务器的硬件配置和需求来控制Nginx服务器的运行方式和性能。 接下来,在配置文件中定义了日志记录相关的指令。这些指令包括记录日志的文件路径、日志格式等。通过配置这些指令,管理员可以指定日志记录的详细程度和记录的位置,方便后续的故障排查和性能优化。 此外,配置文件还包含了服务器块的配置。服务器块是用于定义虚拟机的配置块。每个服务器块都包含一个服务器名称和一系列的指令,用于定义该虚拟机的特定配置信息,如监听端口、域名、SSL证书等。通过配置这些服务器块,可以实现多个虚拟机的同时运行,提供不同的web服务。 总结起来,Nginx配置文件Nginx服务器的核心配置文件,其中定义了全局配置、日志记录和服务器块等重要信息,控制了Nginx服务器的运行方式和功能。管理员可以根据需求对配置文件进行修改,以满足具体的服务器要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值