Nginx/Tengine反代多个Tomcat及负载均衡配置

因为Nginx和Tengine的配置相同,所以本文只介绍Tengine的反代配置

[Meting]
[Music server="netease" id="30854051" type="song"/]
[/Meting]

Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
从2011年12月开始,Tengine成为一个开源项目,Tengine团队在积极地开发和维护着它。Tengine团队的核心成员来自于淘宝、搜狗等互联网企业。Tengine是社区合作的成果,我们欢迎大家参与其中,贡献自己的力量。

Tengine特性

  • 继承Nginx-1.8.1的所有特性,兼容Nginx的配置;
  • 动态模块加载(DSO)支持。加入一个模块不再需要重新编译整个Tengine;
  • 支持HTTP/2协议,HTTP/2模块替代SPDY模块;
  • 流式上传到HTTP后端服务器或FastCGI服务器,大量减少机器的I/O压力;
  • 更加强大的负载均衡能力,包括一致性hash模块、会话保持模块,还可以对后端的服务器进行主动健康检查,根据服务器状态自动上线下线,以及动态解析upstream中出现的域名;
  • 输入过滤器机制支持。通过使用这种机制Web应用防火墙的编写更为方便;
  • 支持设置proxy、memcached、fastcgi、scgi、uwsgi在后端失败时的重试次数;
  • 动态脚本语言Lua支持。扩展功能非常高效简单;
  • 支持按指定关键字(域名,url等)收集Tengine运行状态;
  • 组合多个CSS、JavaScript文件的访问请求变成一个请求;
  • 自动去除空白字符和注释从而减小页面的体积
  • 自动根据CPU数目设置进程个数和绑定CPU亲缘性;
  • 监控系统的负载和资源占用从而对系统进行保护;
  • 显示对运维人员更友好的出错信息,便于定位出错机器;
  • 更强大的防攻击(访问速度限制)模块;
  • 更方便的命令行参数,如列出编译的模块列表、支持的指令等;
  • 可以根据访问文件类型设置过期时间;

Tengine相当于2次优化的Nginx,主要优化了并发方面,所以对于普通用户来说,并没有什么区别,所以选择自己熟悉的就好了。说下我为什么选择Tengine,只是因为Tengine的负载均衡自带监控,某个服务器宕机会自动去除负载均衡列表,而Nginx不会自动去除宕机的服务器,需要自己配置或整合其他负载均衡

不同域名共用80端口访问不同Tomcat,并实现负载均衡

    upstream tomcat1 {
        session_sticky cookie=SESSION.tomcat1 fallback=on mode=insert option=direct;
        server 127.0.0.1:8001 weight=1;
        server 192.168.32.1:8001 weight=1;
    }
    upstream tomcat2 {
        session_sticky cookie=SESSION.tomcat2 fallback=on mode=insert option=direct;
        server 127.0.0.1:9001 weight=1;
        server 192.168.32.2:9001 weight=1;
    }
    #ip访问会返回444错误码
    server {  
        listen       80  default_server;  
	server_name  _;  
        return       444;  
    } 
    server {
        listen       80;
        server_name  abc.com;
        location / { 
            session_sticky_hide_cookie upstream=tomcat1 ;
            proxy_pass http://tomcat1 ;
            proxy_redirect off; 
            proxy_set_header Host $host;  
            proxy_set_header X-Real-IP $remote_addr;  
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
            client_max_body_size 10m;  
            client_body_buffer_size 128k;  
            proxy_connect_timeout 90;  
            proxy_send_timeout 90;  
            proxy_read_timeout 90;  
            proxy_buffer_size 4k;  
            proxy_buffers 4 32k;  
            proxy_busy_buffers_size 64k;  
            proxy_temp_file_write_size 64k;
        }
    }
    server {
        #不同域名共用80端口访问不同Tomcat,并实现负载均衡
        listen       80;
        server_name  bcd.com;
        location / { 
            session_sticky_hide_cookie upstream=tomcat2;
            proxy_pass http://tomcat2;
            proxy_redirect off; 
            proxy_set_header Host $host;  
            proxy_set_header X-Real-IP $remote_addr;  
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
            client_max_body_size 10m;  
            client_body_buffer_size 128k;  
            proxy_connect_timeout 90;  
            proxy_send_timeout 90;  
            proxy_read_timeout 90;  
            proxy_buffer_size 4k;  
            proxy_buffers 4 32k;  
            proxy_busy_buffers_size 64k;  
            proxy_temp_file_write_size 64k;
        }
    }