服务器之家:专注于服务器技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - Nginx - 比较完整的Nginx配置文件nginx.conf常用参数中文详解

比较完整的Nginx配置文件nginx.conf常用参数中文详解

2019-10-29 16:58Nginx教程网 Nginx

这篇文章主要介绍了比较完整的Nginx配置文件nginx.conf常用参数中文详解,需要的朋友可以参考下

概述

Nginx使用有两三年了,现在经常碰到有新用户问一些很基本的问题,我也没时间一一回答,今天下午花了点时间,结合自己的使用经验,把Nginx的主要配置参数说明分享一下,也参考了一些网络的内容,这篇是目前最完整的Nginx配置参数中文说明了。更详细的模块参数请参考:http://wiki.nginx.org/Main

配置总结

  1. #定义Nginx运行的用户和用户组 
  2. user www www; 
  3. #nginx进程数,建议设置为等于CPU总核心数。 
  4. worker_processes 8; 
  5. #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] 
  6. error_log /var/log/nginx/error.log info; 
  7. #进程文件 
  8. pid /var/run/nginx.pid; 
  9. #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。 
  10. worker_rlimit_nofile 65535; 
  11. #工作模式与连接数上限 
  12. events 
  13. #参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。 
  14. use epoll; 
  15. #单个进程最大连接数(最大连接数=连接数*进程数) 
  16. worker_connections 65535; 
  17. #设定http服务器 
  18. http 
  19. include mime.types; #文件扩展名与文件类型映射表 
  20. default_type application/octet-stream; #默认文件类型 
  21. #charset utf-8; #默认编码 
  22. server_names_hash_bucket_size 128; #服务器名字的hash表大小 
  23. client_header_buffer_size 32k; #上传文件大小限制 
  24. large_client_header_buffers 4 64k; #设定请求缓 
  25. client_max_body_size 8m; #设定请求缓 
  26. sendfile on; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。 
  27. autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。 
  28. tcp_nopush on; #防止网络阻塞 
  29. tcp_nodelay on; #防止网络阻塞 
  30. keepalive_timeout 120; #长连接超时时间,单位是秒 
  31. #FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能理解。 
  32. fastcgi_connect_timeout 300; 
  33. fastcgi_send_timeout 300; 
  34. fastcgi_read_timeout 300; 
  35. fastcgi_buffer_size 64k; 
  36. fastcgi_buffers 4 64k; 
  37. fastcgi_busy_buffers_size 128k; 
  38. fastcgi_temp_file_write_size 128k; 
  39. #gzip模块设置 
  40. gzip on; #开启gzip压缩输出 
  41. gzip_min_length 1k; #最小压缩文件大小 
  42. gzip_buffers 4 16k; #压缩缓冲区 
  43. gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0) 
  44. gzip_comp_level 2; #压缩等级 
  45. gzip_types text/plain application/x-javascript text/css application/xml; 
  46. #压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。 
  47. gzip_vary on; 
  48. #limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用 
  49. upstream blog.ha97.com { 
  50. #upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。 
  51. server 192.168.80.121:80 weight=3; 
  52. server 192.168.80.122:80 weight=2; 
  53. server 192.168.80.123:80 weight=3; 
  54. #虚拟主机的配置 
  55. server 
  56. #监听端口 
  57. listen 80; 
  58. #域名可以有多个,用空格隔开 
  59. server_name www.ha97.com ha97.com; 
  60. index index.html index.htm index.php; 
  61. root /data/www/ha97; 
  62. location ~ .*.(php|php5)?$ 
  63. fastcgi_pass 127.0.0.1:9000; 
  64. fastcgi_index index.php; 
  65. include fastcgi.conf; 
  66. #图片缓存时间设置 
  67. location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ 
  68. expires 10d; 
  69. #JS和CSS缓存时间设置 
  70. location ~ .*.(js|css)?$ 
  71. expires 1h; 
  72. #日志格式设定 
  73. log_format access '$remote_addr - $remote_user [$time_local] "$request" ' 
  74. '$status $body_bytes_sent "$http_referer" ' 
  75. '"$http_user_agent" $http_x_forwarded_for'
  76. #定义本虚拟主机的访问日志 
  77. access_log /var/log/nginx/ha97access.log access; 
  78. #对 "/" 启用反向代理 
  79. location / { 
  80. proxy_pass http://127.0.0.1:88; 
  81. proxy_redirect off; 
  82. proxy_set_header X-Real-IP $remote_addr; 
  83. #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP 
  84. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
  85. #以下是一些反向代理的配置,可选。 
  86. proxy_set_header Host $host; 
  87. client_max_body_size 10m; #允许客户端请求的最大单文件字节数 
  88. client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数, 
  89. proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时) 
  90. proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时) 
  91. proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时) 
  92. proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小 
  93. proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的设置 
  94. proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2) 
  95. proxy_temp_file_write_size 64k; 
  96. #设定缓存文件夹大小,大于这个值,将从upstream服务器传 
  97. #设定查看Nginx状态的地址 
  98. location /NginxStatus { 
  99. stub_status on; 
  100. access_log on; 
  101. auth_basic "NginxStatus"
  102. auth_basic_user_file conf/htpasswd; 
  103. #htpasswd文件的内容可以用apache提供的htpasswd工具来产生。 
  104. #本地动静分离反向代理配置 
  105. #所有jsp的页面均交由tomcat或resin处理 
  106. location ~ .(jsp|jspx|do)?$ { 
  107. proxy_set_header Host $host; 
  108. proxy_set_header X-Real-IP $remote_addr; 
  109. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
  110. proxy_pass http://127.0.0.1:8080; 
  111. #所有静态文件由nginx直接读取不经过tomcat或resin 
  112. location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ 
  113. { expires 15d; } 
  114. location ~ .*.(js|css)?$ 
  115. { expires 1h; } 

下面是其他网友的补充

  1. #定义Nginx运行的用户和用户组 
  2. user www www; 
  3.   
  4. #nginx进程数,建议设置为等于CPU总核心数。 
  5. worker_processes 8; 
  6.   
  7. #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] 
  8. error_log /var/log/nginx/error.log info; 
  9.   
  10. #进程文件 
  11. pid /var/run/nginx.pid; 
  12.   
  13. #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。 
  14. worker_rlimit_nofile 65535; 
  15.   
  16. #工作模式与连接数上限 
  17. events 
  18. #参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。 
  19. use epoll; 
  20. #单个进程最大连接数(最大连接数=连接数*进程数) 
  21. worker_connections 65535; 
  22.   
  23. #设定http服务器 
  24. http 
  25. include mime.types; #文件扩展名与文件类型映射表 
  26. default_type application/octet-stream; #默认文件类型 
  27. #charset utf-8; #默认编码 
  28. server_names_hash_bucket_size 128; #服务器名字的hash表大小 
  29. client_header_buffer_size 32k; #上传文件大小限制 
  30. large_client_header_buffers 4 64k; #设定请求缓 
  31. client_max_body_size 8m; #设定请求缓 
  32. sendfile on; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。 
  33. autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。 
  34. tcp_nopush on; #防止网络阻塞 
  35. tcp_nodelay on; #防止网络阻塞 
  36. keepalive_timeout 120; #长连接超时时间,单位是秒 
  37.   
  38. #FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能理解。 
  39. fastcgi_connect_timeout 300; 
  40. fastcgi_send_timeout 300; 
  41. fastcgi_read_timeout 300; 
  42. fastcgi_buffer_size 64k; 
  43. fastcgi_buffers 4 64k; 
  44. fastcgi_busy_buffers_size 128k; 
  45. fastcgi_temp_file_write_size 128k; 
  46.   
  47. #gzip模块设置 
  48. gzip on; #开启gzip压缩输出 
  49. gzip_min_length 1k; #最小压缩文件大小 
  50. gzip_buffers 4 16k; #压缩缓冲区 
  51. gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0) 
  52. gzip_comp_level 2; #压缩等级 
  53. gzip_types text/plain application/x-javascript text/css application/xml; 
  54. #压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。 
  55. gzip_vary on; 
  56. #limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用 
  57.   
  58. upstream blog.ha97.com { 
  59. #upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。 
  60. server 192.168.80.121:80 weight=3; 
  61. server 192.168.80.122:80 weight=2; 
  62. server 192.168.80.123:80 weight=3; 
  63.   
  64. #虚拟主机的配置 
  65. server 
  66.   #监听端口 
  67.   listen 80; 
  68.   #域名可以有多个,用空格隔开 
  69.   server_name www.ha97.com ha97.com; 
  70.   index index.html index.htm index.php; 
  71.   root /data/www/ha97; 
  72.   location ~ .*\.(php|php5)?$ 
  73.   { 
  74.   fastcgi_pass 127.0.0.1:9000; 
  75.   fastcgi_index index.php; 
  76.   include fastcgi.conf; 
  77.   } 
  78.   #图片缓存时间设置 
  79.   location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ 
  80.   { 
  81.   expires 10d; 
  82.   } 
  83.   #JS和CSS缓存时间设置 
  84.   location ~ .*\.(js|css)?$ 
  85.   { 
  86.   expires 1h; 
  87.   } 
  88.   #日志格式设定 
  89.   log_format access '$remote_addr - $remote_user [$time_local] "$request" ' 
  90.   '$status $body_bytes_sent "$http_referer" ' 
  91.   '"$http_user_agent" $http_x_forwarded_for'
  92.   #定义本虚拟主机的访问日志 
  93.   access_log /var/log/nginx/ha97access.log access; 
  94.   
  95.   #对 "/" 启用反向代理 
  96.   location / { 
  97.   proxy_pass http://127.0.0.1:88; 
  98.   proxy_redirect off; 
  99.   proxy_set_header X-Real-IP $remote_addr; 
  100.   #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP 
  101.   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
  102.   #以下是一些反向代理的配置,可选。 
  103.   proxy_set_header Host $host; 
  104.   client_max_body_size 10m; #允许客户端请求的最大单文件字节数 
  105.   client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数, 
  106.   proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时) 
  107.   proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时) 
  108.   proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时) 
  109.   proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小 
  110.   proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的设置 
  111.   proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2) 
  112.   proxy_temp_file_write_size 64k; 
  113.   #设定缓存文件夹大小,大于这个值,将从upstream服务器传 
  114.   } 
  115.   
  116.   #设定查看Nginx状态的地址 
  117.   location /NginxStatus { 
  118.   stub_status on; 
  119.   access_log on; 
  120.   auth_basic "NginxStatus"
  121.   auth_basic_user_file conf/htpasswd; 
  122.   #htpasswd文件的内容可以用apache提供的htpasswd工具来产生。 
  123.   } 
  124.   
  125.   #本地动静分离反向代理配置 
  126.   #所有jsp的页面均交由tomcat或resin处理 
  127.   location ~ .(jsp|jspx|do)?$ { 
  128.   proxy_set_header Host $host; 
  129.   proxy_set_header X-Real-IP $remote_addr; 
  130.   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
  131.   proxy_pass http://127.0.0.1:8080; 
  132.   } 
  133.   #所有静态文件由nginx直接读取不经过tomcat或resin 
  134.   location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ 
  135.   { expires 15d; } 
  136.   location ~ .*.(js|css)?$ 
  137.   { expires 1h; } 

延伸 · 阅读

精彩推荐