2019
12-06

Nginx配置详解 nginx.conf优化与性能调优 nginx.conf宝塔面板nginx高并发性能调优

官方QQ群号码:922069959

Nginx配置详解 nginx.conf优化与性能调优 nginx.conf宝塔面板nginx高并发性能调优

nginx.conf配置优化与性能调优

nginx.conf配置详细注解

#选择用户启动

user  nginx;

#Nginx开启多个工作进程,自动

worker_processes  auto;

#Nginx开启多核任务处理,配合worker_processes,自动

worker_cpu_affinity auto;

#Nginx 最大可用文件描述符数量,同时需要配置操作系统的 "ulimit -n 200000",或者在 /etc/security/limits.conf 中配置

worker_rlimit_nofile 80000;

#pid        logs/nginx.pid;

#events模块:配置影响nginx服务器或与用户的网络连接

events {

# 配置单个 Nginx 单个进程可服务的客户端数量,(最大值客户端数 = 单进程连接数 * 进程数 )。最大 64K 

    worker_connections  65535;

#防止在同一一个时刻只有一个请求的情况下,出现多个睡眠进程会被唤醒但只能有一个进程可获得请求的尴尬

accept_mutex on;

#Nginx服务器的每个工作进程可以同时接受多个新的网络连接

    multi_accept on;

#使用epoll事件驱动,因为epoll的性能相比其他事件驱动要好很多

    use epoll;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

#使用log_format指定日志的格式

    log_format log_json '{"local_date_time": "$time_local",'

              #' "@fields":{'

              '"nginx.access.client_ip":"$remote_addr" ,'

              '"nginx.access.user_name":"$remote_user" ,'

              '"nginx.access.host":"$http_host" ,'

              '"nginx.access.info":"$request" ,'

              '"nginx.access.cookie":"$http_cookie" ,'

              '"nginx.access.response_code":"$status" ,'

              '"nginx.access.body_sent.bytes":"$body_bytes_sent" ,'

              '"nginx.access.referrer":"$http_referer" ,'

              '"nginx.access.agent":"$http_user_agent" ,'

              '"nginx.access.remote_ip":"$http_x_forwarded_for" ,'

              '"nginx.access.request_time":"$request_time" ,'

              '"nginx.access.upstream_addr":"$upstream_addr" ,'

              '"nginx.access.upstream_status":"$upstream_status" ,'

              '"nginx.access.upstream_response_time":"$upstream_response_time"}';

#由于使用日志分析工具ELK对访问日志做统计,需要将日志格式定义为json格式

    access_log /var/log/nginx/access.log log_json;

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

    #error_log  logs/error.log  notice;

    #error_log  logs/error.log  info;

#是否调用sendfile函数传输文件,默认为off,使用sendfile函数传输,可以减少user mode和kernel mode的切换,从而提升服务器性能。

    sendfile    on;

#该参数限定Nginx worker process每次调用sendfile()函数传输数据的最大值,默认值为0,如果设置为0则无限制。配合上边sendfile 选项一起使用。

sendfile_max_chunk 512k;

#防止网络阻塞,(需开sendfile)

    tcp_nopush  on;

#用于提高I/O性能,提高高频发送小数据报文的实时性。

    tcp_nodelay on;

#给客户端分配keep-alive链接超时时间,服务器将在超时之后关闭相应的连接。

    keepalive_timeout  30;

#服务器响应超时设置

    send_timeout 10;

#安全优化:当前使用的nginx可能会有未知的漏洞,如果被黑客使用将会造成无法估量的损失,将nginx的版本隐藏

    server_tokens off;

#设置请求头和请求体(各自)的超时时间。

    client_header_timeout 30;

    client_body_timeout 30;

#客户端请求头缓冲区大小 

    client_header_buffer_size 4K;

#允许客户端请求的最大单文件字节数

    client_max_body_size 10m;

#设置用户保存各种key的共享内存的参数,5m指的是5兆

    limit_conn_zone $binary_remote_addr zone=addr:5m;

    #为给定的key设置最大的连接数,允许每一个IP地址最多同时打开有100个连接

    limit_conn addr 100;

#告诉nginx关闭不响应的客户端连接

    reset_timedout_connection on;

#静态文件缓存,开启缓存的同时也指定了缓存文件的最大数量,20s如果文件没有被请求则删除缓存

    open_file_cache max=102400 inactive=20s;

#多长时间检查一次缓存的有效期

    open_file_cache_valid 30s;

#有效期内缓存文件最小的访问次数,只有访问超过2次的才会被缓存

    open_file_cache_min_uses 2;

#gzip

#设置nginx采用gzip压缩的形式发送数据,减少发送数据量,但会增加请求处理时间及CPU处理时间

    gzip  on;

#设置对数据启用压缩的最少字节数。如果一个请求小于1000字节,我们最好不要压缩它,因为压缩这些小的数据会降低处理此请求的所有进程的速度

    gzip_min_length  1k;

#指定gzip功能压缩文件时使用的缓存空间的大小

    gzip_buffers     4 16k;

#识别http的协议版本

    gzip_http_version 1.0;

#设置数据的压缩等级,值越高压缩比越大也越慢,设置4比较中立

    gzip_comp_level 4;

#需要压缩的数据格式

    gzip_types       text/plain application/x-javascript text/css application/xml;

#打开缓存的同时也指定了缓存最大数目,以及缓存的时间

open_file_cache max=100000 inactive=20s; 

#在open_file_cache中指定检测正确信息的间隔时间

open_file_cache_valid 30s; 

#定义了open_file_cache中指令参数不活动时间期间里最小的文件数

open_file_cache_min_uses 2; 

#缓存文件错误信息

open_file_cache_errors on; 

官方QQ群号码:922069959
点击链接加入群聊【路由器交流】:https://jq.qq.com/?_wv=1027&k=5AKdmZP

您可能感兴趣的文章

免费支持本站

支付宝打赏支付宝打赏 微信打赏微信打赏

本站》评论功能已永久关闭

官方QQ群号码:922069959
点击链接加入群聊【路由器交流】:
https://jq.qq.com/?_wv=1027&k=5AKdmZP
官方QQ群号码:922069959