nginx配置详细

全局配置

user nginx nginx; #启动Nginx工作进程的用户和组

worker_processes [number | auto]; #启动Nginx工作进程的数量,一般设为和CPU核心数相同,auto自动根据cpu的核数生成对应的worker工作进程

worker_cpu_affinity 00000001 00000010 00000100 00001000 | auto ; #将Nginx的worker工作进程绑定到指定的CPU核心,默认Nginx是不进行worker进程绑定的,绑定并不是意味着当前nginx进程独占以一核心CPU,但是可以保证此worker进程不会运行在其他核心上,
这就极大减少了nginx的worker工作进程在不同的cpu核心上的来回跳转,减少了CPU对进程的资源分配与回收以及内存管理等,因此可以有效的提升nginx服务器的性能。

#错误日志记录配置,语法: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;

#pid文件保存路径,主进程master的进程编号,启动的时候会自动生成这个pid的文件指定master进程的编号
pid /apps/nginx/logs/nginx.pid;

 

#nginx的master进程以普通用户运行的话,优先级只能改大不能改小,只要root才能把优先级改小优先级变高
worker_priority 0; #工作进程优先级,-20~19(写成20的最高也是到19),指定worker进程的优先级-20到正19,数字越大优先级越小,数字越小优先级越大,worker_priority -20最高的优先级,master进程是以root身份运行

 

#指定所有worker进程的文件打开描述符的数量,每一个用户的访问就会占用一个文件描述符,默认不指定配置不限制worker进程打开文件描述符数量太多的用户访问系统会崩溃
worker_rlimit_nofile 65536; #所有worker进程能打开的文件数量上限,包括:Nginx的所有连接(例如与代理服务器的连接等),而不仅仅是与客户端的连接,另一个考虑因素是实际的并发连接数不能超过系统级别的最大打开文件数的限制.最好与ulimit -n 或者limits.conf的值保持一致,worker进程描述符的数量要和ulimit -n的一样,但是如果nginx是systemctl start nginx启动的要修改nginx的启动文件的最大链接数限制,如果是nginx这样直接启动就是收到limits.conf的配置文件限制,平常是受systemd的配置文件限制

 

daemon off; #前台运行Nginx服务用于测试、或者以容器运行时,需要设为off,默认为是on后台运行
master_process off|on; #是否开启Nginx的master-worker工作模式,仅用于开发调试场景,默认为on,如果是off只开启master进程不开启worker进程

events {
worker_connections 65536; #设置单个工作进程的最大并发连接数,单个worker进程最大的并发数量,一般worker进程的个数乘以这个数计算出最大的并发数
use epoll; #使用epoll事件驱动,Nginx支持众多的事件驱动,比如:select、poll、epoll,只能设置在events模块中设置。指定使用的就是epoll多路复用
accept_mutex on; #on为同一时刻一个请求轮流由worker进程处理,而防止被同时唤醒所有worker,避免多个睡眠进程被唤醒的设置,默认为off,新请求会唤醒所有worker进程,此过程也称为"惊群",因此nginx刚安装完以后要进行适当的优化。建议设置为on,on轮流让所有worker进程处理客户的请求,off的话一次唤醒所有worker进程默认值就是off唤醒所有worker进程,有用户请求的过来所有的worker进程响应,会造成资源的浪费,惊群现象

multi_accept on; #on时Nginx服务器的每个工作进程可以同时接受多个新的网络连接,此指令默认为off,即默认为一个工作进程只能一次接受一个新的网络连接,打开后几个同时接受多个。建议设置为on,每个worker可以同时接收多个用户的请求
}

http模块配置


http {
include mime.types; #导入支持的文件类型,是相对于/apps/nginx/conf的目录
default_type application/octet-stream; #除mime.types中文件类型外,设置其它文件默认类型,访问其它类型时会提示下载不匹配的类型文件

#charset utf-8; #默认编码
server_names_hash_bucket_size 128; #服务器名字的hash表大小
client_header_buffer_size 32k; #上传文件大小限制
large_client_header_buffers 4 64k; #设定请求缓
client_max_body_size 8m; #设定请求缓

client_max_body_size 110m;上传文件大小限制

#日志配置部分
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 logs/access.log main;#访问日志

server_tokens off; #隐藏Nginx server版本。

 

#开启目录列表访问,合适下载服务器,默认关闭,需要的时候在打开使用
#autoindex on; # 显示目录
#autoindex_exact_size on; # 显示文件大小 默认为on,显示出文件的确切大小,单位是bytes 改为off后,显示出文件的大概大小,单位是kB或者MB或者GB
#autoindex_localtime on; # 显示文件时间 默认为off,显示的文件时间为GMT时间 改为on后,显示的文件时间为文件的服务器时间

#开启限制IP连接数的时候需要使用
#limit_zone crawler $binary_remote_addr 10m;

sendfile on;#实现文件零拷贝 #作为web服务器的时候打开sendfile加快静态文件传输,指定是否使用sendfilesendfile系统调用来传输文件,sendfile通过DMA(直接内存访问)方式直接访问文件数据,并通过传输协议发送,从而避免了数据在内核缓冲区和用户缓冲区之间的拷贝,操作效率很高,被称之为零拷贝,硬盘>> kernel buffer (快速拷贝到kernel socket buffer) >>协议栈。作为静态服务器提升性能的一种功能,这个配置就是nginx作为静态服务器的时候直接把本地磁盘的文件返回给用户

#tcp_nopush on; #在开启了sendfile的情况下,合并请求后统一发送给客户端。有些请求会很小,比如几个字节,nginx会把这个请求合并发送给客户,好处节省带宽,坏处就是延迟那个文件没有发生完毕就会延迟响应用户,想节省带宽就打开,想要用户体验好就关闭
#tcp_nodelay off; #在开启了keepalived模式下的连接是否启用TCP_NODELAY选项,当为off时,延迟0.2s发送用户响应报文,默认On时,不延迟发送,立即发送用户响应报文,建议打开提升用户体验。

#keepalive_timeout 0;
keepalive_timeout 65 65; #设置会话保持时间,第二个值为响应首部:keepAlived:timeout=65,可以和第一个值不同
keepalive_requests number; #在⼀次⻓连接上所允许请求的资源的最⼤数量,默认为100次,公司网站小文件越多要设置大一些

 

gzip on; #开启压缩功能
gzip_comp_level 5; #压缩等级为5
gzip_min_length 1k; #对于大于1k的文件才进行压缩
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/gif image/png; #指定压缩文件的类型
gzip_vary on; #压缩之后添加http响应报文头

 

#一分钟之内文件被访问5次才会被缓存,并且1分钟检查文件是否被缓存5次没有5次就会从缓存删除
open_file_cache max=20000 inactive=60s; #最⼤缓存10000个⽂件,⾮活动数据超时时⻓60s,最大缓存文件个数
open_file_cache_valid 60s; #每间隔60s检查⼀下缓存数据有效性
open_file_cache_min_uses 5; #60秒内⾄少被命中访问5次才被标记为活动数据,要不然就被删除
open_file_cache_errors on; #缓存错误信息

 

# FastCGI相关参数是为了改善网站的性能
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;

 

include /apps/nginx/conf/conf.d/*.conf; 定义子配置文件


}

 

 

posted @ 2023-09-13 16:19  YYQ-  阅读(452)  评论(0编辑  收藏  举报