Nginx文档地址

https://www.nginx.cn/doc/index.html

配置层次

image.png

配置解析

  1. # 运行用户
  2. user nobody;
  3. #启动进程,通常设置成和cpu的数量相等
  4. worker_processes 1;
  5. #全局错误日志及PID文件及存放路径
  6. #error_log logs/error.log;
  7. #error_log logs/error.log notice;
  8. #error_log logs/error.log info;
  9. #pid logs/nginx.pid;
  10. #工作模式及连接数上限
  11. events {
  12. #单个后台work process进程的最大并发链接数
  13. worker_connections 1024;
  14. }
  15. #网页信息
  16. http {
  17. #设定mine类型,类型由mine。type文件定义
  18. include mime.types;
  19. default_type application/octet-stream;
  20. #设定日志格式
  21. #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  22. # '$status $body_bytes_sent "$http_referer" '
  23. # '"$http_user_agent" "$http_x_forwarded_for"';
  24. #日志文件存储路径/usr/local/...(nginx的安装目录)
  25. #access_log logs/access.log main;
  26. #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
  27. #对于普通应用,必须设为 on,
  28. #如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,
  29. #以平衡磁盘与网络I/O处理速度,降低系统的uptime.
  30. sendfile on;
  31. #tcp_nopush on;
  32. #连接超时时间
  33. #keepalive_timeout 0;
  34. keepalive_timeout 65;
  35. #开启gzip压缩 如果没有开启gzip,用户访问我们的时候就是以原图来访问。
  36. gzip on;
  37. #小于1K的文件不适合压缩,下限是1k
  38. gzip_min_lenth 1k;
  39. #缓存的内存空间--4个16进制数据流
  40. gzip_buffers 4 16k;
  41. #http版本
  42. gzip_http_version 1.1
  43. #开启判断客户端和浏览器是否支持gzip
  44. gzip_vary on;
  45. #设定虚拟主机配置
  46. server {
  47. #监听80端口
  48. listen 80;
  49. #定义使用 访问的网址
  50. server_name localhost;
  51. #设置字符编码
  52. #charset koi8-r;
  53. #设定本虚拟主机的访问日志
  54. #access_log logs/host.access.log main;
  55. #默认请求,优先级最低的配置
  56. location / {
  57. #定义服务器的默认网站根目录位置 这个root目录其实就是/usr/local目录
  58. root html;
  59. # 匹配任何请求,因为所有请求都是以"/"开始
  60. # 但是更长字符匹配或者正则表达式匹配会优先匹配
  61. #定义首页索引文件的名称
  62. index index.html index.htm;
  63. }
  64. #配置Nginx缓存
  65. location ~.*\.(jpg|png|gif)$ {
  66. expires 30d; #缓存存放30天,然后自动清除
  67. }
  68. location ~.*\.(css|js)? $ {
  69. expires 1h; #缓存存放1小时
  70. }
  71. #error_page 404 /404.html;
  72. # redirect server error pages to the static page /50x.html
  73. #定义错误页面
  74. error_page 500 502 503 504 /50x.html;
  75. location = /50x.html {
  76. root html;
  77. }
  78. # 对 “/” 启用反向代理,对上面的实例
  79. location / {
  80. proxy_pass http://127.0.0.1:3000; # 设置要代理的 uri,注意最后的 /。可以是 Unix 域套接字路径,也可以是正则表达式。
  81. proxy_redirect off; # 设置后端服务器“Location”响应头和“Refresh”响应头的替换文本
  82. proxy_set_header X-Real-IP $remote_addr; # 获取用户的真实 IP 地址
  83. #后端的Web服务器可以通过 X-Forwarded-For 获取用户真实IP,多个 nginx 反代的情况下,例如 CDN。参见:http://gong1208.iteye.com/blog/1559835 和 http://bbs.linuxtone.org/thread-9050-1-1.html
  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. }
  98. # 本地动静分离反向代理配置
  99. # 所有 jsp 的页面均交由tomcat或resin处理
  100. location ~ .(jsp|jspx|do)?$ {
  101. proxy_set_header Host $host;
  102. proxy_set_header X-Real-IP $remote_addr;
  103. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  104. proxy_pass http://127.0.0.1:8080;
  105. }
  106. # 所有静态文件由nginx直接读取不经过tomcat或resin
  107. location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)${
  108. root /data/www/ospring.pw/public;
  109. expires 15d;
  110. }
  111. location ~ ^/(upload|html)/ {
  112. root /data/www/ospring.pw/public/html;
  113. expires 30d;
  114. }
  115. include vhosts//.conf; 分割配置文件,方便管理
  116. }
  117. #这里可以配置多台虚拟主机
  118. # another virtual host using mix of IP-, name-, and port-based configuration
  119. #配置虚拟机
  120. #server {
  121. # 配置监听端口,只要端口不同就是不同的虚拟主机
  122. # listen 8000;
  123. # listen somename:8080;
  124. #配置访问域名
  125. # server_name somename alias another.alias;
  126. # location / {
  127. # root html;
  128. # index index.html index.htm;
  129. # }
  130. #}
  131. # HTTPS server
  132. web服务器配置
  133. #server {
  134. # listen 443 ssl;
  135. # server_name localhost;
  136. # ssl_certificate cert.pem;
  137. # ssl_certificate_key cert.key;
  138. # ssl_session_cache shared:SSL:1m;
  139. # ssl_session_timeout 5m;
  140. # ssl_ciphers HIGH:!aNULL:!MD5;
  141. # ssl_prefer_server_ciphers on;
  142. # location / {
  143. # root html;
  144. # index index.html index.htm;
  145. # }
  146. #}
  147. }

负载均衡策略

轮询 默认方式
weight 权重方式
ip_hash 依据ip分配方式
least_conn 最少连接方式
fair(第三方) 响应时间方式
url_hash(第三方) 依据URL分配方式

例如:

  1. #动态服务器组
  2. upstream backend {
  3. server localhost:8080 weight=2; #tomcat 7.0
  4. server localhost:8081; #tomcat 8.0
  5. server localhost:8082 backup; #tomcat 8.5
  6. server localhost:8083 max_fails=3 fail_timeout=20s; #tomcat 9.0
  7. }
  8. server {
  9. listen 8081;
  10. server_name test.csdn.net;
  11. root /home/system/test.csdn.net/test;
  12. location ^~ /Upload/upload {
  13. proxy_pass http://backend;
  14. }
  15. }