2、Nginx配置文件nginx.conf的配置详解

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

前面Nginx安装配置文件中简单的解释了nginx.conf配置文件中几个指令的含义,这篇文章内容将对这些指令的用法作出详细的解释。

先看看配置文件的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
user  nginx;
worker_processes  4;
error_log   /var/log/nginx/error .log warn;
pid         /var/run/nginx .pid;
events {
     worker_connections  1024;
}
http {
     include        /etc/nginx/mime .types;
     default_type  application /octet-stream ;
     log_format  main   '$remote_addr - $remote_user [$time_local] "$request" '
                       '$status $body_bytes_sent "$http_referer" '
                       '"$http_user_agent" "$http_x_forwarded_for"' ;
     access_log   /var/log/nginx/access .log  main;
     sendfile        on;
     #tcp_nopush     on;
     keepalive_timeout  65;
     #gzip  on;
     include  /etc/nginx/conf .d/*.conf;
}

Nginx的配置分为全局块、events块、http块和server块。在nginx.conf文件中只包含了全局块、events块和http块的内容,server块的配置需要自己定义。每一个server块都可以当做一个虚拟主机,一个http块可以包含多个server块,每一个server块的配置都是独立的,不会影响到其他server块。http全局块的配置对server块有效,但是如果server块中和http全局块的配置冲突,则采用就近原则,以server块的配置为准。下面来看看配置文件中这些指令的含义和其用法。


全局配置段:

1
user nginx;

user :指定可以运行Nginx服务的用户,只有被设置的用户或者用户组成员才有运行nginx进程的权限,如果希望所有用户都能运行Nginx进程,则可以注释掉该指令,或者设置为user nobody nonobody;

user指令用法:

user  username [groupname];


1
work_processes 4;

work_processes:设置Nginx服务器运行时启动的进程数,理论上设置的值越大,则Nginx服务器能响应的请求数越多,但是由于受到服务器软硬件(CPU和磁盘驱动器)的限制,所以必须合理设置才行。

一般设置为与CPU核心数相等,或者为CPU核心数减去1,我的CPU为4核,所以我设置为4。

work_processes执行用法:

1
work_processes number | auto;

number为work_processes启动的最大processes数,设置为auto时,则Nginx服务器自动检测并设置。



1
error_log   /var/log/nginx/error .log warn;

error_log:设置Nginx服务器错误日志路径。

error_log用法:

error_log file | stderr 【debug | info | notice | warn | error | crit | alert | emerg】

从语法结构看,Nginx服务器的日志支持输出到某一固定的文件file,或者输出到标准错误输出stderr,日志级别是可选项,由低到高为debug(需要编译时使用--with-debug开启debug开关)info、notice、warn、error、crit 、alert、emerg等。


1
pid         /var/run/nginx .pid;

pid:指定Nginx服务器PID文件的存放路径。

pid用法:

1
pid  file


其他配置指令:

1、worker_cpu_affinity CPUMASK CPUMASK ...;

该指令用来为每个进程分配CPU的工作内核,其值为几组二进制的值表示,例如:

worker_cpu_affinity 0001 0010 0100 1000;

如果CPU为8核,则可以这样设置:

worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 0010000 001000000 10000000;

2、worker_priority number;

指定Nginx进程的CPUnice值,范围为-20到19,值越小,优先级越高。默认所有进程nice值为0

3、worker_rlimit_nofile number;

指定每个worker进程能打开的最大文件描述符的数量

4、worker_rlimit_sigpending number;

指定每个用户能够发给worker进程的信号的最大数量




events配置段:

1
worker_connections  1024;

worker_connections:设置每一个work_process的最大并发连接数,默认为1024。其语法为:

1
worker_connections number;



其他配置指令:

1、accept_mutex on | off;

当某一时刻只有一个网络请求进来,多个睡眠的Nginx进程会被叫醒来响应请求,但是只有一个进程能获得连接,如果每次唤醒的进程数目太多,会影响一部分系统性能。accept_mutex就是为解决这一问题。当设置为on的时候,表示让多个worker轮流的序列化的响应请求。默认为开启状态,其只能在events段中配置。

2、multi_accpet on |off;

设置每个Nginx进程都能同时接收多个请求,默认为关闭状态。同样只能在events段中配置

3、use 【select | poll | kqueus | epoll | rtsig | /dev/poll | eventport】

该指令用来选择事件驱动的模型,建议让Nginx自动选择


http配置段:

1
include        /etc/nginx/mime .types;

include:引入其他的Nginx配置或者第三方模块的配置到当前主配置文件中,语法为:

1
include  file ;

file为要引入的配置文件,支持相对路径。


1
default_type  application /octet-stream ;

default_type:用于指定处理前端请求的MIME类型。此指令还可以在http段、server段、或者location中配置


1
2
3
4
log_format  main   '$remote_addr - $remote_user [$time_local] "$request" '
                       '$status $body_bytes_sent "$http_referer" '
                       '"$http_user_agent" "$http_x_forwarded_for"' ;
access_log   /var/log/nginx/access .log  main;

access_log:用于设置访问日志的路径

log_format:用于设置访问日志的格式,配置文件中的$remote_addr都是nginx的内置变量


1
sendfile        on;

sendfile:用于设置是否启用sendfile功能,语法为:sendfile on | off;


sendfile_max_chunk_size;

设置sendfile传输的数据量最大值,如果设置为0,则不限制。


1
keepalive_timeout  65;

keepalive_timeout:设置长连接的会话保持时间,该指令还可以在server段和location中设置。其语法为:keepalive timeout [header_timeout]; 


keepalive_requests 100;

Nginx服务器和用户端建立连接后,用户端通过此连接发送请求,keepalive_requests指令用于限制用户通过某一连接向Nginx服务器发送请求的次数。默认为100


1
include  /etc/nginx/conf .d/*.conf;

设置http端配置包含/etc/nginx/conf.d目录中所有以".conf"文件结尾的配置文件,一般将server段配置文件放在该目录下。











本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1769705,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
17天前
|
应用服务中间件 BI nginx
Nginx的location配置详解
【10月更文挑战第16天】Nginx的location配置详解
|
24天前
|
缓存 负载均衡 安全
Nginx常用基本配置总结:从入门到实战的全方位指南
Nginx常用基本配置总结:从入门到实战的全方位指南
214 0
|
28天前
|
应用服务中间件 Linux nginx
Jetson 环境安装(四):jetson nano配置ffmpeg和nginx(亲测)之编译错误汇总
这篇文章是关于在Jetson Nano上配置FFmpeg和Nginx时遇到的编译错误及其解决方案的汇总。
77 4
|
9天前
|
应用服务中间件 API nginx
nginx配置反向代理404问题
【10月更文挑战第18天】本文介绍了使用Nginx进行反向代理的配置方法,解决了404错误、跨域问题和302重定向问题。关键配置包括代理路径、请求头设置、跨域头添加以及端口转发设置。通过调整`proxy_set_header`和添加必要的HTTP头,实现了稳定的服务代理和跨域访问。
nginx配置反向代理404问题
|
4天前
|
应用服务中间件 网络安全 PHP
八个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
Nginx 是一个高效的 HTTP 服务器和反向代理,擅长处理静态资源、负载均衡和网关代理等任务。其配置主要通过 `nginx.conf` 文件完成,但复杂设置可能导致错误。本文介绍了几个开源的 Nginx 可视化配置系统,如 Nginx UI、VeryNginx、OpenPanel、Ajenti、Schenkd nginx-ui、EasyEngine、CapRover 和 NGINX Agent,帮助简化和安全地管理 Nginx 实例。
|
30天前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
134 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
29天前
|
编解码 Ubuntu 应用服务中间件
Jetson 环境安装(三):jetson nano配置ffmpeg和nginx(亲测)
本文介绍了在NVIDIA Jetson Nano上配置FFmpeg和Nginx的步骤,包括安装、配置和自启动设置。
119 1
Jetson 环境安装(三):jetson nano配置ffmpeg和nginx(亲测)
|
14天前
|
缓存 负载均衡 应用服务中间件
Nginx配置
【10月更文挑战第22天】在实际配置 Nginx 时,需要根据具体的需求和环境进行调整和优化。同时,还需要注意配置文件的语法正确性和安全性。
33 7
|
22天前
|
前端开发 JavaScript 应用服务中间件
终极 Nginx 配置指南
本文介绍了Nginx的基本配置及其优化方法。首先,通过删除注释简化了Nginx的默认配置文件,使其更易于理解。接着,文章将Nginx配置文件分为全局块、events块和http块三部分进行详细解释。此外,还提供了如何快速上线网站、解决前端history模式404问题、配置反向代理、开启gzip压缩、设置维护页面、在同一IP上部署多个网站以及实现动静分离的具体配置示例。最后,附上了Nginx的基础命令,包括安装、启动、重启和关闭等操作。
|
27天前
|
负载均衡 应用服务中间件 nginx
Nginx的6大负载均衡策略及权重轮询手写配置
【10月更文挑战第9天】 Nginx是一款高性能的HTTP服务器和反向代理服务器,它在处理大量并发请求时表现出色。Nginx的负载均衡功能可以将请求分发到多个服务器,提高网站的吞吐量和可靠性。以下是Nginx支持的6大负载均衡策略:
115 7