加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

负载均衡与反向代理(Nginx/OpenResty)

发布时间:2019-09-18 14:48:33 所属栏目:外闻 来源:今日头条
导读:我们使用Nginx时,大多数场景下使用的都是七层的HTTP负载均衡(ngx_http_upstream_module)。在1.9.0版本以后,Nginx也开始支持TCP(ngx_stream_upstream_module)四层负载均衡。 四层/七层负载均衡的区别 四层负载均衡,就是基于IP+端口的负载均衡(TCP/UDP)。

域名上游服务器

  1. upstream backend { 
  2.  server c0.3.cn; 
  3.  server c1.3.cn; 

上面的配置在加载时,host就会被解析成IP。但是当host的IP变更时,IP不会改变。但是商业版的Nginx是支持动态变更IP的。另外proxy_pass http://c1.3.cn是可以支持动态解析的,但是这样反向代理就只能配置一台了,比较尴尬。还有一种解决方案就是lua脚本动态解析。这里不再赘述了。

备份上游服务器

  1. upstream backend { 
  2.  server 192.168.0.1:8080 weight=1; 
  3.  server 192.168.0.2:8080 weight=2 backup; 

上面192.168.0.2被配置为备份服务器,当所有上游主机都不存活时,请求就会被转发给备份服务器。

不可用服务器

  1. upstream backend { 
  2.  server 192.168.0.1:8080 weight=1; 
  3.  server 192.168.0.2:8080 weight=2 down; 

当上游服务器出现故障时,可以通过该配置临时摘除机器。

配置示例

除了反向代理之外,还可以使用缓存来减少上游服务器的压力。

全局配置(proxy cache)

  1. proxy_buffering on; 
  2. proxy_buffer_size 4k; 
  3. proxy_buffers 512 4k; 
  4. proxy_busy_buffers_size 64k; 
  5. proxy_temp_file_write_size 256k; 
  6. proxy_cache_lock on; 
  7. proxy_cache_lock_timeout 200ms; 
  8. proxy_temp_path /tmp/proxy_temp; 
  9. proxy_cache_path /tmp/proxy_cache levels=1:2 keys_zone=cache:512m inactive=5m max_size=8g; 
  10. proxy_connect_timeout 3s; 
  11. proxy_read_timeout 5s; 
  12. proxy_send_timeout 5s; 

开启proxy buffer后,缓存内容将存放在文件系统中,从而提高系统性能。

location 配置

  1. location ~ ^/backend/(.*)$ { 
  2.  # 设置一致性哈希负载均衡key 
  3.  set_by_lua_file $consistent_key "lua/balancing.lua"; 
  4.  # 失败重试配置 
  5.  proxy_next_upstream error timeout http_500 http_502 http_504; 
  6.  proxy_next_upstream_timeout 2s; 
  7.  proxy_next_upstream_tries 2; 
  8.  # 请求上游服务器使用GET方法(无论客户端请求方法) 
  9.  proxy_method GET; 
  10.  # 不给上游服务器传递请求体 
  11.  proxy_pass_request_body off; 
  12.  # 不给上游服务器传递请求头 
  13.  proxy_pass_request_headers off; 
  14.  # 设置上游服务器哪些响应头不发送给客户端 
  15.  proxy_hide_header Vary; 
  16.  # 支持keep-alive 
  17.  proxy_http_version 1.1; 
  18.  proxy_set_header Connection ""; 
  19.  # 给上游服务器传递Referer、Cookie和Host(按需传递) 
  20.  proxy_set_header Referer $http_referer; 
  21.  proxy_set_header Cookie $http_cookie; 
  22.  proxy_set_header Host www.moguhu.com; 
  23.  proxy_pass http://backend /$1$is_args$args; 

通常情况下,为了减少网络开销,一般会使用gzip来减少网络数据包的大小。

  1. gzip on; 
  2. gzip_min_length 1k; 
  3. gzip_buffers 16 16k; 
  4. gzip_http_version 1.1; 
  5. gzip_proxied any; 
  6. gzip_comp_level 2; 
  7. gzip_types text/plain application/x-javascript text/css application/xml; 
  8. gzip_vary on; 

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读