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_newsuse_backend appapis_server_albums if is_appapis is_appapis_albumsuse_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_newsuse_backend appapis_server_albums if is_appapis is_appapis_albumsuse_backend appapis_server if is_appapis

注意两点:

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

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

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

globallog 127.0.0.1   local0log 127.0.0.1   local1 notice#log loghost    local0 infomaxconn 51200chroot /usr/share/haproxyuid 99gid 99daemonnbproc 1#debug#quietdefaultslog     globalmode    httpoption  dontlognulloption  redispatchoption  abortonclosetimeout connect 5000mstimeout client  30000mstimeout server  30000mslisten  admin_statsbind     0.0.0.0:6421option  httplogmode    httpstats   refresh 30sstats   uri /admin_statsstats   realm Load Balancestats   auth    admin:9874523*&/frontend web_inmode httpmaxconn 51200bind :80acl 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.comuse_backend appapis_server_news if is_appapis is_appapis_newsuse_backend appapis_server_albums if is_appapis is_appapis_albumsuse_backend appapis_server if is_appapisuse_backend waps_server if is_wapsbackend appapis_serveroption  httpclosebalance roundrobinoption  forwardforstats   uri /appapisserver  s1 10.164.57.82:8080 check weight 1 minconn 1 maxconn 5120 check inter 40000server  s2 10.164.57.81:8080  check weight 1 minconn 1 maxconn 5120 check inter 40000backend appapis_server_newsoption  httpclosebalance roundrobinoption  forwardforstats   uri /appapisserver  s1 10.164.57.83:8000 check weight 1 minconn 1 maxconn 5120 check inter 40000backend appapis_server_albumsoption  httpclosebalance roundrobinoption  forwardforstats   uri /appapisserver  s1 10.164.57.84:8002 check weight 1 minconn 1 maxconn 5120 check inter 40000backend waps_serveroption  httpclosebalance roundrobinoption  forwardforstats   uri /appapisserver  s1 10.164.57.83:8001 check weight 1 minconn 1 maxconn 5120 check inter 40000     listen  app_v1_userservicesbind :10001mode  tcpbalance roundrobinserver  s1 10.164.57.82:10001 check weight 1 minconn 1 maxconn 5120 check inter 40000server  s2 10.164.57.81:10001  check weight 1 minconn 1 maxconn 5120 check inter 40000listen  app_v1_companyservicesbind :10002mode  tcpbalance roundrobinserver  s1 10.164.57.82:10002 check weight 1 minconn 1 maxconn 5120 check inter 40000server  s2 10.164.57.81:10002  check weight 1 minconn 1 maxconn 5120 check inter 40000

转载于:https://www.cnblogs.com/smail-bao/p/6739101.html

haproxy 同一域名下分发请求相关推荐

  1. Spring源码分析之doDispatch分发请求逻辑

    首先,我的另外一篇博客已经讲述了DispatcherServlet的整个初始化过程,地址如下: http://blog.csdn.net/u011734144/article/details/7413 ...

  2. nginx同一域名下部署多个vue项目

    -----------nginx同一域名下部署多个vue项目------------------------ 1.目的 实现nginx服务端同一域名下部署多个vue项目. 2. 实例 pmobile项 ...

  3. 微服务网关分发请求至子服务的两种方式

    1. 场景 在微服务体系中,网关作为分发请求的关键组件.如何根据请求的特征将请求分发给特定的服务?我总结了两种方式. 2. 根据子域名划分服务模块 #mermaid-svg-MLs857Smda7Gu ...

  4. ie下ajax请求不到数据库,解决IE下Ajax请求无效

    在做web开发是,大多时候都会使用FireFox作为调试的浏览器.上面携带的FireBug用来调试JavaScript实在是太方便了,绝大多数的问题都能够通过它跟踪调试出来.但是,当项目发布时,不能仅 ...

  5. Nginx 指定多个域名跨域请求配置

    nginx指定多个域名跨域请求配置 什么是跨域 假设我们页面或者应用已在 http://www.test1.com 上了,而我们打算从 http://www.test2.com 请求提取数据.一般情况 ...

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

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

  7. 列举某域名下所有二级域名的方法

    这里介绍三种列举某域名下所有二级域名的方法 1.命令行下列举 此方法好像是hoky很久以前写的,不过原文步骤有点乱,我又重新整理了一下,以我们小组的站为例 C:\Documents and Setti ...

  8. 关于一个域名下如何更换网站

    说明:建立在有域名.服务器.两个网站的基础之上. 背景: 原来的网站采用的是微企点建站的方式,对于那种拖拉拽不懂编程的人用的,现在自己开发一个更为强大的功能性网站,想把这个新网站替换掉原来的网站,而且 ...

  9. 同一域名下部署多个vue项目

    同一域名下部署多个vue项目 问题说明 现在有这么一个需求,有两个 vue 项目, vue1和 vue2 ,如何让 http://www.baidu.com/vue1/   作为 vue1 项目的根路 ...

最新文章

  1. [Python人工智能] 一.TensorFlow环境搭建及神经网络入门
  2. 学习java第一步_Spring Boot 学习第一步(搭建初步环境)
  3. 文件句柄(file handles) 文件描述符(file descriptors)
  4. 具有Spring Boot和Yeoman的单页Angularjs应用程序
  5. HDVPSS模块介绍及使用
  6. java 文件crc校验_Java 对文件进行 CRC32 校验
  7. 64位装32位oracle软件,在64位linux下安装32位oracle软件
  8. Golang中MYSQL驱动
  9. 目标检测使用LabelImg标注VOC数据格式和YOLO数据格式——LabelImg使用详细教程
  10. 双轨世界:现实之轨与智慧之轨
  11. vue-composition-api.mjs:1:7: ERROR: No matching export in “node_modules/vue/dist/vue.runtime.esm-bun
  12. yum是干什么的_yum 安装是什么
  13. Android studio离线安装教程
  14. python写音乐_你想过用代码来写音乐吗?我用业余时间开发的一个可以编程写音乐的python库(一)...
  15. 学习信奥要不要先学python
  16. RPM包安装或者安装源码包
  17. 在visual studio中出现Error spawning的原因及解决思路
  18. 经济危机下我国玩具业现状与前景
  19. 晶闸管|Thyristor(半控型器件)
  20. 微信小程序:去除自带顶部导航栏

热门文章

  1. Windows程序设计之创建窗口示例
  2. 机器学习资源和路线图
  3. 什么是原码、反码和补码?
  4. oracle分组聚合查询,Oracle中分组查询group by用法规则解析
  5. 英语与计算机的整合,浅谈计算机应用与英语教学的整合
  6. 078_html5Canvas
  7. kali怎么新建文本_甘特图怎么画?零基础快速绘制甘特图的软件
  8. Serious Python
  9. Android 四大组件之——Acitivity(四) Activity是如何加载显示内容的?
  10. python request post json_python接口之request测试:以json格式发送post请求,.json方法,查看响应结果的情况...