http://www.th7.cn/Program/java/201608/936162.shtml

https://my.oschina.net/lockupme/blog/733375

还有一点要注意的是,我们要把带path的use_backend放在不带path的前面

比如说这里

		 use_backend appapis_server_news if is_appapis is_appapis_news
use_backend appapis_server_albums if is_appapis is_appapis_albums
use_backend appapis_server if is_appapis
我们这里带接口路径的放在不带接口路径的前面。否则的话先读取不带path路径的use_backend,这样的话,就不会读取后面的path路径的use_backend
我在工作中就遇到过这个问题。调整一下前后顺序就好了

在实际项目中,项目接口可能是多语言开发完成,对外只绑定同一个域名,如。

不管后端采用哪种语言来开发接口,在前端(App或Wap或Pc),只要调用一个域名来请求接口。在这里采用Haproxy来做代理负载的

对于接口开的功能,一般按模板来开发,如用户模块可能采用Java、新闻模块可能采用Php、相册模块可能采用C#开发。

Haproxy的配置在这里不再详细说明,可在网上搜索。

看看Haproxy在实际中如何配置,同一个域名来实现的。

接口实例是这样:

java: api.domain.com/apis/users/具体接口名称

Php: api.domain.com/apis/news/具体接口名称

C#:  api.domian.com/apis/albums/具体接口名称

acl is_appapis_news path_beg  -i /apis/news     #Php接口
acl is_appapis_albums path_beg -i /apis/albums #C#接口
acl is_appapis hdr_beg(host) -i api.domain.com #主Java接口 use_backend appapis_server_news if is_appapis is_appapis_news
use_backend appapis_server_albums if is_appapis is_appapis_albums
use_backend appapis_server if is_appapis

注意两点:

1、接口都是按模块来开发,所在配置中用path_beg,来区分,同时在使用use_backend代理的时候,if 后面要跟着主host代理“is_appapis”,

2、Haproxy,配置规则是按顺序来执行的,这点一定要注意

完整配置文件如下(适当删减,因为是真实环境,里面IP地址和域名都是假):

global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 51200
chroot /usr/share/haproxy
uid 99
gid 99
daemon
nbproc 1
#debug
#quiet defaults
log global
mode http
option dontlognull
option redispatch
option abortonclose
timeout connect 5000ms
timeout client 30000ms
timeout server 30000ms listen admin_stats
bind 0.0.0.0:6421
option httplog
mode http
stats refresh 30s
stats uri /admin_stats
stats realm Load Balance
stats auth admin:9874523*&/ frontend web_in
mode http
maxconn 51200
bind :80 acl is_appapis_news path_beg -i /apis/news #Php接口
acl is_appapis_albums path_beg -i /apis/albums #C#接口
acl is_appapis hdr_beg(host) -i api.domain.com #主Java接口 acl is_waps hdr_beg(host) -i wap.domain.com use_backend appapis_server_news if is_appapis is_appapis_news
use_backend appapis_server_albums if is_appapis is_appapis_albums
use_backend appapis_server if is_appapis
use_backend waps_server if is_waps backend appapis_server
option httpclose
balance roundrobin
option forwardfor
stats uri /appapis
server s1 10.164.57.82:8080 check weight 1 minconn 1 maxconn 5120 check inter 40000
server s2 10.164.57.81:8080 check weight 1 minconn 1 maxconn 5120 check inter 40000 backend appapis_server_news
option httpclose
balance roundrobin
option forwardfor
stats uri /appapis
server s1 10.164.57.83:8000 check weight 1 minconn 1 maxconn 5120 check inter 40000 backend appapis_server_albums
option httpclose
balance roundrobin
option forwardfor
stats uri /appapis
server s1 10.164.57.84:8002 check weight 1 minconn 1 maxconn 5120 check inter 40000 backend waps_server
option httpclose
balance roundrobin
option forwardfor
stats uri /appapis
server s1 10.164.57.83:8001 check weight 1 minconn 1 maxconn 5120 check inter 40000 listen app_v1_userservices
bind :10001
mode tcp
balance roundrobin
server s1 10.164.57.82:10001 check weight 1 minconn 1 maxconn 5120 check inter 40000
server s2 10.164.57.81:10001 check weight 1 minconn 1 maxconn 5120 check inter 40000 listen app_v1_companyservices
bind :10002
mode tcp
balance roundrobin
server s1 10.164.57.82:10002 check weight 1 minconn 1 maxconn 5120 check inter 40000
server s2 10.164.57.81:10002 check weight 1 minconn 1 maxconn 5120 check inter 40000

haproxy 同一域名下分发请求的更多相关文章

  1. [转载] 浏览器Browser对同域名下的请求并发数量

    原文链接:https://blog.csdn.net/a562550212/article/details/79552713 另附原文作者贴的一个知乎地址,几个答主讲的非常好  https://www ...

  2. JMeter 将上一个请求的结果作为下一个请求的参数——使用正则提取器(转载)

    在接口测试和压力测试过程中,经常会将几个流程串联起来才能测试.如:我要进行获取用户信息接口测试,我就要先登录成功后,才能获取用户信息.所以,我就要首先要登录,获得我的登录凭证(tokenId或tick ...

  3. jmeter 如何将上一个请求的结果作为下一个请求的参数——使用正则提取器

    1.简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如 ...

  4. 细雨学习笔记:Jmeter上一个请求的结果作为下一个请求的参数--使用正则提取器

    Jmeter接口自动化--使用正则提取器,可以把上一个请求的结果取出来,作为下一个请求的入参

  5. Jmeter如何将上一个请求的结果作为下一个请求的参数——使用正则表达式提取器

    首先在线程组下添加两个HTTP请求, 添加好两个HTTP请求后,在每个HTTP请求下添加一个查看结果数 在第一个HTTP请求下添加正则表达式提取器 在第一个HTTP请求添加好IP地址,路径,端口号,协 ...

  6. JMeter 如何把上一个请求的结果作为下一个请求的参数 —— 使用正则提取器

    有这样一个压力测试环境,有一个上传页面,上传成功之后服务器会返回一些上传信息(比如文件的 id 或者保存路径之类的信息),然后压力机会继续下一个请求,比如调整 id 为 xx 的文件的一些信息等等.问 ...

  7. 几种将上一个请求的cookies带入下一个请求中的方法

    *** 此次练习不包含使用requests.session()方法实现: 练习环境:本地安装禅道 格式: 1.头部传Cookie:xxx2.加参数cookies=字典格式3.直接传RequestsCo ...

  8. jmeter之beanshell取出需要参数,传递给下个请求

    jmeter之beanshell取出需要参数,传递给下个请求 事件背景: 上周同事用jmeter录制脚本,录制成功回放后,并没有达到自己想要的结果. ps:他想从数据库取出某个字段值,然后对数据库做操 ...

  9. 【转】jmeter 如何将上一个请求的结果作为下一个请求的参数——使用正则提取器

    1.简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如 ...

随机推荐

  1. C# ListView用法

    ListView是个较为复杂的控件       1.定义   把它拽进来,系统会自动在Designer.cs里添加一个  this.listView1 = new System.Windows.For ...

  2. eclipse mavenWeb项目真正实现热部署(修改java代码和页面文件不用重启tomcat)

            1.前言 首先,本文创作灵感源于博客园园作者signheart,特此鸣谢!原文链接见文末推荐: 百度都搜破了,全网讲的都是如何将maven项目部署到tomcat上,对于热部署的认知,真 ...

  3. 转 configure: error: Cannot find ldap libraries in /usr/lib 解决办法

    今天在centos 6.2 64位版本上安装LNMP,config php的时候出现下面错误而退出 configure: error: Cannot find ldap libraries in /u ...

  4. Eclipse和MyEclipse使用技巧--MyEclipse下创建的项目导入到Eclipse中详细的图文配置方法

    一.情景再现. 有些人比较喜欢用Myeclipse开发,有些人却比较喜欢用eclipse开发.但是其中有一个问题,Myeclipse里面的项目导入的时候出现了一个小小的问题. 如下: 二.说明问题 导 ...

  5. 三种分布式对象主流技术——COM、Java和COBRA

    既上一遍,看到还有一遍将关于 对象的, 分布式对象, 故摘抄入下: 目前国际上,分布式对象技术有三大流派——COBRA.COM/DCOM和Java.CORBA技术是最早出现的,1991年OMG颁布了C ...

  6. 【TP3.2 + 其他任何PHP框架】编辑、删除、添加数据,返回原分页 (ajax+form两种方式提交均可以)

    1.目的1:在如下的一个页面中,p=2,比如我们删除数据id=13,通过ajax提交{id,p} 这2个参数,就可以了,页面返回json的url参数中原样带上p即可. 2.目的2: 步骤1:在如下页面 ...

  7. ios中tableview网封装(viewcontroller封装)常用的

    下载地址 http://pan.baidu.com/share/link?shareid=3657500168&uk=923776187 使用框架 1:asIHttpRequest库 2;SB ...

  8. 用@resource注解方式完成属性装配

    注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自动装配会产生未知情况,开发人员无法预见最终的装配结果. 1 需要修改xml文件的以下信息.    加入下列红色部分的4行 & ...

  9. 快排法求第k大

    快排法求第k大,复杂度为O(n) import com.sun.media.sound.SoftTuning; import java.util.Arrays; import java.util.Ra ...

  10. JavaScript HTML DOM 入门详解

    HTML DOM (文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被构造为对象的树. HTML DOM 树 通过 ...