通常代理服务器只用于处理内部网络对Intenet的请求,客户端必须通过代理服务器把本来要发送到Web服务器上的请求通过代理服务器分发给Web服务器,Web服务器响应时再通过代理服务器把响应发给客户端;
 
下面是一个反向代码的物理网络图:
 
下面通过三台服务器来实现这个经典的反向代理结构:
  反向代理服务器:1台Tengine服务器
  Web服务器:2台Web服务,搭载Tomcat的应用服务器
 
Tomcat的应用服务器的搭建:
 
安装Java JDK
安装命令: 
rpm -ivh jdk-7u79-linux-x64.rpm
    
配置环境变量 :    
vi ~/.bash_profile
PATH=$PATH:$HOME/bin
JAVA_HOME=/usr/java/jdk1.7.0_79/
PATH=$PATH:$JAVA_HOME/bin
export PATH
保存完以后  java -version 查看是否成功
 
安装Tomecat
安装Tomcat,Tomcat是绿色版软件,所以下载后直接解压到相应的目录即可,下载地址:http://tomcat.apache.org/download-70.cgi  
#解压:
tar -zxvf apache-tomcat-7.0.61.tar.gz
mv apache-tomcat-7.0.61 /usr/local/tomcat
#将端口改为80
vim /usr/local/tomcat/conf/server.xml #启动Tomcat
sh /usr/local/tomcat/bin/startup.sh
 
关闭防火墙查看效果;
    
 
为了能够区分出两个Tomcat,我们将Tomcat的默认页面,改为Tomcat 1 : ip  和Tomcat 2 : ip 
    
    
#将Tomcat的默认端口8080改为80
vim /usr/local/tomcat/webapps/ROOT/index.jsp

   

  

Tengine的服务器的搭建:
 
 
 
配置Tengine的配置文件,将客户端请求的IP转发向两台Web应用服务器:

#upstream   localhost{
##weigth参数表示权值,权值越高被分配到的几率越大
#server 127.0.0.1:9001 weight=1 max_fails=2 fail_timeout=30s;
#server 127.0.0.1:9004 weight=1 max_fails=2 fail_timeout=30s;
#server 127.0.0.1:9007 weight=1 max_fails=2 fail_timeout=30s;
}
vim /etc/usr/local/tengine-2.1.0/conf/nginx.conf
#通过 upstream 进行请求转发
upstream backend{
server 192.168.163.13:80;
server 192.168.163.14:80;
}
server {
location / {
proxy_pass http://backend;
}
location /status{
check_status;
}
}

重启Nginx

然后我们用不同的浏览器,去反复请求 192.168.163.11 会发现,服务器会在两个Tomecat之间来回切换;

  
 

为添加tengine的状态监控

Tengine的状态监控分为两种:

    

文档:http://tengine.taobao.org/documentation_cn.html

我们演示一个最简单的健康检查模块,只需要在upstream里面添加下面代码,然后在location中启用即可:

check interval=3000 rise=2 fall=5 timeout=1000 type=http;
check_keepalive_requests 100;
check_http_send "HEAD / HTTP/1.1\r\nConnection: keep-alive\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
 
例:
upstream  backend{
server 192.168.163.13:80;
server 192.168.163.14:80;
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
check_http_send "HEAD / HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx; }
server {
location / {
proxy_pass http://backend;
}
location /status{
check_status;
}
}
 
然后重启Nginx,在浏览器中输入 IP/status即可查看到监控状态,比Nginx的功能要好的多;
   
当我停掉其中一台服务器的时候,健康状态检查就会显示有一台服务器挂了;
   
当Nginx请求超过5次,还是处于宕机状态时,就会标红显示;
   
当我恢复其中一台服务器以后,两台Web服务器的状态马上又恢复了;
   
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Tengine笔记3:Nginx的反向代理和健康状态检查的更多相关文章

  1. nginx笔记 安装nginx 配置 反向代理 多虚拟主机

    1,检测linux上是否 通过yum安装了nginxrpm   -qi  nginx 2.安装nginx之前的依赖包yum install gcc patch libffi-devel python- ...

  2. nginx_upstream_check_module-master对nginx的后端机器进行健康状态检查报403错误【转】

    在nginx.conf配置文件中 在server添加 location /nstatus { check_status; access_log off; #allow 192.168.2.11; #d ...

  3. Nginx 笔记与总结(15)nginx 实现反向代理 ( nginx + apache 动静分离)

    在 nginx 中,proxy 用来实现反向代理,upstream 用来实现负载均衡. 例如有两台服务器,nginx 服务器作为代理服务器,执行 .html 文件,apache 服务器上执行 .php ...

  4. 运维工作笔记-------nginx的反向代理

    1.nginx的反向代理意义 一般来说,我们在项目中,不会直接让项目服务器ip与外网做直接映射,这样一则是不安全,二是客户直接去访问项目服务器,对项目服务器带来的压力太大,从而导致项目运行速度变慢,程 ...

  5. [笔记]nginx配置反向代理和负载均衡

    1.nginx配置文件:源码安装情况下,nginx.conf在解压后的安装包内.yum安装,一般情况下,一部分在/etc/nginx/nginx.conf中,一部分在/etc/nginx/conf.d ...

  6. [转]Nginx介绍-反向代理、负载均衡

    原文:https://www.cnblogs.com/wcwnina/p/8728391.html 作者:失恋的蔷薇 1. Nginx的产生 没有听过Nginx?那么一定听过它的"同行&qu ...

  7. Windos环境用Nginx配置反向代理和负载均衡

    Windos环境用Nginx配置反向代理和负载均衡 引言:在前后端分离架构下,难免会遇到跨域问题.目前的解决方案大致有JSONP,反向代理,CORS这三种方式.JSONP兼容性良好,最大的缺点是只支持 ...

  8. 在ubuntu上面配置nginx实现反向代理和负载均衡

    上一篇文章(http://www.cnblogs.com/chenxizhang/p/4684260.html),我做了一个实验,就是利用Visual Studio,基于Nancy框架,开发了一个自托 ...

  9. nginx的反向代理和负载均衡的一个总结

    之前一直觉的nginx的反向代理和负载均衡很厉害的样子,最近有机会接触了一下公司的这方面的技术,发现技术就是一张窗户纸呀,捅破了啥都明白了! 接下来先看一下nginx的反向代理: 简单的来说就是ngi ...

随机推荐

  1. 转:使用C#的HttpWebRequest模拟登陆网站

    这篇文章是有关模拟登录网站方面的. 实现步骤: 启用一个web会话 发送模拟数据请求(POST或者GET) 获取会话的CooKie 并根据该CooKie继续访问登录后的页面,获取后续访问的页面数据. ...

  2. PV与并发之间换算的算法 换算公式

  3. DWR常用<init-param>参数

    1 安全参数 allowGetForSafariButMakeForgeryEasier 开始版本:2.0 默认值:false 描述:设置成true使DWR工作在Safari 1.x , 会稍微降低安 ...

  4. JAVA JNI

    jni非常好的一篇文章 http://m.blog.csdn.net/article/details?id=22827307 JAVA JNI介绍 http://blog.csdn.net/cyg08 ...

  5. Android应用开发中webview上传文件的几种思路

    1. 常规方法,重写WebChromeClient 的 openFileChooser 方法 private class MyWebChromeClient extends WebChromeClie ...

  6. mvc ajax请求

    @{ ViewBag.Title = "ajax"; } <script src="../../Scripts/jquery-1.4.4.js" type ...

  7. NSDictionary初始化,使用@{}方法,插入nil时会报空指针异常

    由于今天在NSDictionary初始化的时候出现Crash异常,故记录一下,避免下次再犯. 在Objective-C中,NSDictionary初始化的方法有很多种 方法1: [NSDictiona ...

  8. Java-----instanceof、isInstance、isAssignableFrom

    转载自:http://blog.csdn.net/hekewangzi/article/details/51956170

  9. HDU 2653 - Waiting ten thousand years for Love

    首先,对于一个 '@' 飞上去,飞下来都要耗1点魔力,所以是两点= = 然后站在同一格 魔力可能不同,所以要增加一维. 还有当前搜到的不一定是最小. 别的也没啥. #include <iostr ...

  10. POJ 2446 Chessboard

    要求用占两格的长方形铺满平面上除去指定点 二分图匹配 #include <iostream> #include <cstdio> #include <cstring> ...