Nginx参数说明及性能调优

本文详细解析Nginx的常用参数及其作用,包括服务器块设置、反向代理、负载均衡、缓存策略等方面,同时分享了实战中的性能调优技巧,帮助提升Web服务的响应速度和稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. # worker_processes的数目应该不多于服务器的CPU的核数目,
  2. # 每个CPU核超过1个worker不会使得Nginx性能有什么提升
  3. worker_processes 4;
  4. # 给Nginx使用的文件描述符的数目.这个需要一起设置系统内核参数'ulimit -n 200000'
  5. # 或修改'/etc/security/limits.conf', 参考《高负载Linux调优》
  6. worker_rlimit_nofile 200000;
  7. # 设定每个worker进程最多可以服务多少客户端,
  8. # Max clients = worker_connections * worker_processes
  9. # "Max clients"其实也受到系统可使用的socket连接(socket connections)的限制,大约是64K
  10. worker_connections 1024;
  11. # 对于Linux系统来说选择epoll,那样每个线程可以服务更多的客户端
  12. use epoll;
  13. # 在Nginx获得有新连接的通知之后,接受尽可能多的连接
  14. # 需要注意的是:如果worker_connections设置太低的话,这样可能会造成拥堵
  15. multi_accept on;
  16. # 缓存打开的文件描述符(open FDs),经常被访问的文件的信息.
  17. # 适当设置下面这些值可以极大提高每秒的请求数.
  18. # 实际设置的值不一定跟下面的一样,请根据具体机器来调优.下面只是测试环境中的一个设置例子.
  19. open_file_cache max=200000 inactive=20s;
  20. open_file_cache_valid 30s;
  21. open_file_cache_min_uses 2;
  22. open_file_cache_errors on;
  23. # 缓冲日志写入可以加速I/O,或是有可能的话甚至可以禁止,看具体的生产环境要求.
  24. #access_log /var/log/nginx/access.log main buffer=16k;
  25. access_log off;
  26. # 使用sendfile从Linux内核中的一个文件描述符(FD)拷贝数据到另一个文件描述符比read() + write()更有效率,
  27. # 因为read() + write()的方式需要在用户空间(user space)来回传输数据
  28. sendfile on;
  29. # 使用tcp_nopush会使Nginx尝试使用一个数据包发送它的HTTP响应头(HTTP response head),而不是使用部分帧
  30. # (partial frames).无论是对调用sendfile之前追加头部(prepending headers)或是对是吞吐量优化来说,
  31. # 都是非常有用的.
  32. tcp_nopush on;
  33. # 不要缓冲数据发送(data-sends)(禁止Nagle算法).
  34. # 设置为on非常适合于实时频繁发送小数据.(比如图片,pdf,ppt文件之类不是小数据的,应该设置为off)
  35. tcp_nodelay on;
  36. # keep-alive连接的超时时间.服务器在这个超时时间之后会关闭这个连接.
  37. keepalive_timeout 30;
  38. # 可通过keep-alive连接的客户端请求数.下面的值仅是测试环境使用,具体设置请根据实际机器来调.
  39. keepalive_requests 100000;
  40. # 在客户端停止响应之后,允许服务器关闭连接,释放socket关联的内存
  41. reset_timedout_connection on;
  42. # 设置客户端读请求的超时时间,默认是60s
  43. client_body_timeout 10;
  44. # 设置客户端的响应超时时间.如果客户端停止读取数据,在这么多时间之后就释放过期的客户端连接,默认是60s
  45. send_timeout 2;
  46. # 压缩设置.减少网络传输数据量.
  47. gzip on;
  48. gzip_min_length 10240;
  49. gzip_proxied expired no-cache no-store private auth;
  50. gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
  51. gzip_disable "MSIE [1-6]\.";
  52. 下面是一个完整的调优例子:
    • user www www;
    • worker_processes 4;
    • worker_cpu_affinity 000000000000000000000001 000000000000000000000010 000000000000000000000100 000000000000000000001000 000000000000000000010000 000000000000000000100000 000000000000000001000000 000000000000000010000000 000000000000000100000000 000000000000001000000000 000000000000010000000000 000000000000100000000000 000000000001000000000000 000000000010000000000000 000000000100000000000000 000000001000000000000000 000000010000000000000000 000000100000000000000000 000001000000000000000000 000010000000000000000000 000100000000000000000000 001000000000000000000000 010000000000000000000000 100000000000000000000000;
    • worker_rlimit_nofile 100000;
    • pid logs/nginx.pid;
    • error_log logs/error.log crit;
    • events {
    • # Maximum clients = worker_processes * worker_connections
    • worker_connections 1024;
    • multi_accept on;
    • use epoll;
    • }
    • #google_perftools_profiles log/profile;
    • http {
    • # Basic Settings
    • sendfile on;
    • open_file_cache max=100000 inactive=20s;
    • open_file_cache_valid 30s;
    • open_file_cache_min_uses 2;
    • open_file_cache_errors on;
    • tcp_nopush on;
    • tcp_nodelay on;
    • keepalive_timeout 20;
    • #keepalive_requests 100000;
    • reset_timedout_connection on;
    • client_max_body_size 15m;
    • client_body_timeout 60;
    • client_header_timeout 60;
    • client_body_buffer_size 128K;
    • client_header_buffer_size 1k;
    • large_client_header_buffers 4 32k;
    • send_timeout 60;
    • types_hash_max_size 2048;
    • server_tokens off;
    • include mime.types;
    • default_type text/html;
    • charset utf-8;
    • # Log Format
    • log_format main '$remote_addr - $remote_user [$time_local] '
    • '"$request" $status $body_bytes_sent "$http_referer" '
    • '"$http_user_agent" "$http_x_forwarded_for"';
    • # Gzip Settings
    • gzip on;
    • gzip_static on;
    • gzip_disable "MSIE [1-6]\.";
    • gzip_vary on;
    • gzip_proxied any;
    • # gzip_proxied expired no-cache no-store private auth;
    • gzip_comp_level 2;
    • gzip_min_length 5000;
    • gzip_http_version 1.1;
    • gzip_buffers 16 8k;
    • gzip_types text/css text/javascript text/xml text/plain text/x-component application/javascript application/x-javascript application/json application/xml application/rss+xml font/truetype application/x-font-ttf font/opentype application/vnd.ms-fontobject image/svg+xml;
    • ignore_invalid_headers on;
    • #Virtual Host configs
    • include conf.d/*;
    • include sites-enabled/*.conf;
    • }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值