zoukankan      html  css  js  c++  java
  • Nginx负载趟过的坑

        在项目中经常会碰到需要利用Nginx作负载,最近在利用Nginx作负载均衡器时碰到一个很奇葩的问题。

        本来按照以前的实现将打好的A.war包直接放到tomcat根目录(webapps)下,然后按照如下方式配置Nginx即可实现负载均衡:

    upstream KV{
       ip_hash;
       server 10.68.234.160:8080;
       server 10.68.234.161:8080;
       server 10.68.234.162:8080;
       server 10.68.234.163:8080;
    }
    
    upstream KY{
       ip_hash;
       server 10.68.234.160:9080;
       server 10.68.234.161:9080;
       server 10.68.234.162:9080;
       server 10.68.234.163:9080;
    }
    
    server {
      listen   80;
      server_name localhost;
      charset utf-8;
      
      locaion ^~/mm/ {
          proxy_pass http://KV;
      }  
    
        locaion ^~/yy/ {
          proxy_pass http://KY;
      }  
      ...
    }
    

       这样调用..../mm/yy即可通过Nginx即可实现负载均衡。

       然而在应用上线时,方案评审小组却告之二组不同的应用必须指定相应的上下文,假设我们都指定对应上下文为test,那么如果还按照上述方式配置Nginx就会发现容器始终匹配不到访问的URL。

      跟踪代码并经过多次测试发现:Nginx中的路径是通过#分割的,如果配置为/,那么Nginx是无法匹配到正确的访问路径的。

      根据上面的测试调整War布署方式:将编译生成的A.war重命名为test#A.war,然后放到tomcat的webapps根目录下,待tomcat启动后,我们发现webapps下产生test#A目录,此时对应的Nginx.conf依然可以参考上述配置:

    upstream KV {
      ip_hash;
      server 10.63.79.170:9080;
      server 10.63.79.171:9080;
    }
    
    server {
      listen 80;
      server_name localhost;
    }
    
    location / {
      proxy_pass http://KV;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    

     另外:基于DubboX框架利用Tomcat+Nginx布署应用时,需要注意如下几点:

    <dubbo:protocol name="rest" port="7090" threads="1000" contextpath="mmservice/test" server="servlet" accepts="500" extension="com.test.provider.ExceptionMapperProvider"/>
    

     DubboX中的port与conextpath必须与tomcat中的port和contextpath保持一致(tomcat中的port在server.xml中进行配置;conextpath即为上文所描述的mmservice#test.war)

  • 相关阅读:
    对比度亮度调整及滑动条应用
    多项式求逆
    【转载】android手势翻页效果
    [Android实例] webview 实现翻页功能
    (转载)Android 平滑和立体翻页效果1
    android背景选择器selector用法
    WebView调用javaScript
    (转载自eoe论坛)Android上百实例源码分析以及开源分析集合打包
    android用户界面之WebView教程实例汇总
    WebView使用总结(应用函数与JS函数互相调用)
  • 原文地址:https://www.cnblogs.com/moonandstar08/p/5910984.html
Copyright © 2011-2022 走看看