haproxy 同一域名下分发请求
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 同一域名下分发请求相关推荐
- Spring源码分析之doDispatch分发请求逻辑
首先,我的另外一篇博客已经讲述了DispatcherServlet的整个初始化过程,地址如下: http://blog.csdn.net/u011734144/article/details/7413 ...
- nginx同一域名下部署多个vue项目
-----------nginx同一域名下部署多个vue项目------------------------ 1.目的 实现nginx服务端同一域名下部署多个vue项目. 2. 实例 pmobile项 ...
- 微服务网关分发请求至子服务的两种方式
1. 场景 在微服务体系中,网关作为分发请求的关键组件.如何根据请求的特征将请求分发给特定的服务?我总结了两种方式. 2. 根据子域名划分服务模块 #mermaid-svg-MLs857Smda7Gu ...
- ie下ajax请求不到数据库,解决IE下Ajax请求无效
在做web开发是,大多时候都会使用FireFox作为调试的浏览器.上面携带的FireBug用来调试JavaScript实在是太方便了,绝大多数的问题都能够通过它跟踪调试出来.但是,当项目发布时,不能仅 ...
- Nginx 指定多个域名跨域请求配置
nginx指定多个域名跨域请求配置 什么是跨域 假设我们页面或者应用已在 http://www.test1.com 上了,而我们打算从 http://www.test2.com 请求提取数据.一般情况 ...
- JMeter 将上一个请求的结果作为下一个请求的参数——使用正则提取器(转载)...
在接口测试和压力测试过程中,经常会将几个流程串联起来才能测试.如:我要进行获取用户信息接口测试,我就要先登录成功后,才能获取用户信息.所以,我就要首先要登录,获得我的登录凭证(tokenId或tick ...
- 列举某域名下所有二级域名的方法
这里介绍三种列举某域名下所有二级域名的方法 1.命令行下列举 此方法好像是hoky很久以前写的,不过原文步骤有点乱,我又重新整理了一下,以我们小组的站为例 C:\Documents and Setti ...
- 关于一个域名下如何更换网站
说明:建立在有域名.服务器.两个网站的基础之上. 背景: 原来的网站采用的是微企点建站的方式,对于那种拖拉拽不懂编程的人用的,现在自己开发一个更为强大的功能性网站,想把这个新网站替换掉原来的网站,而且 ...
- 同一域名下部署多个vue项目
同一域名下部署多个vue项目 问题说明 现在有这么一个需求,有两个 vue 项目, vue1和 vue2 ,如何让 http://www.baidu.com/vue1/ 作为 vue1 项目的根路 ...
最新文章
- [Python人工智能] 一.TensorFlow环境搭建及神经网络入门
- 学习java第一步_Spring Boot 学习第一步(搭建初步环境)
- 文件句柄(file handles) 文件描述符(file descriptors)
- 具有Spring Boot和Yeoman的单页Angularjs应用程序
- HDVPSS模块介绍及使用
- java 文件crc校验_Java 对文件进行 CRC32 校验
- 64位装32位oracle软件,在64位linux下安装32位oracle软件
- Golang中MYSQL驱动
- 目标检测使用LabelImg标注VOC数据格式和YOLO数据格式——LabelImg使用详细教程
- 双轨世界:现实之轨与智慧之轨
- vue-composition-api.mjs:1:7: ERROR: No matching export in “node_modules/vue/dist/vue.runtime.esm-bun
- yum是干什么的_yum 安装是什么
- Android studio离线安装教程
- python写音乐_你想过用代码来写音乐吗?我用业余时间开发的一个可以编程写音乐的python库(一)...
- 学习信奥要不要先学python
- RPM包安装或者安装源码包
- 在visual studio中出现Error spawning的原因及解决思路
- 经济危机下我国玩具业现状与前景
- 晶闸管|Thyristor(半控型器件)
- 微信小程序:去除自带顶部导航栏
热门文章
- Windows程序设计之创建窗口示例
- 机器学习资源和路线图
- 什么是原码、反码和补码?
- oracle分组聚合查询,Oracle中分组查询group by用法规则解析
- 英语与计算机的整合,浅谈计算机应用与英语教学的整合
- 078_html5Canvas
- kali怎么新建文本_甘特图怎么画?零基础快速绘制甘特图的软件
- Serious Python
- Android 四大组件之——Acitivity(四) Activity是如何加载显示内容的?
- python request post json_python接口之request测试:以json格式发送post请求,.json方法,查看响应结果的情况...