【技术实现步骤摘要】
基于Nginx和PHP七层负载均衡网关的方法
[0001]在计算机编程语言
PHP
领域中,与
Nginx
相结合的七层负载均衡网关的方法
。
技术介绍
[0002]随着互联网的发展,业务量的增大
、
前后端分离
、
开发人员数量增加
、
开发测试生产环境的一致性
、
以及
CDN、
流量控制
、
权限控制等更精细化的操作增加,再有目前微服务架构的盛行,就衍生出大量的网关设计
。
包括各大云厂商(阿里云
、
腾讯云等)都支持各种语言统一接入网关,在云上统一管理,但是在目前主流云厂商平台中,对
PHP
这门语言的接入不太友好,
JAVA、GO、C
等语言有良好的接入文档,但
PHP
的接入文档很模糊
。
[0003]在传统的
PHP
开发中,以单体架构为主,单体项目包含多个模块,通过不同的入口文件或路由控制,访问不同的模块
。
随着开发人员的增多
、
业务模块的增多,单体架构中多个开发人员同时在一个项目中进行开发会导致代码冲突,上线的时候需要等所有人员全部开发完毕才能部署,降低了迭代的时间
。
各个模块的访问量,也可能不一样,以及上述
CDN、
流量控制
、
权限控制等更精细化的操作,如果限制可能 ...
【技术保护点】
【技术特征摘要】
1.
基于
Nginx
和
PHP
七层负载均衡网关的方法,其特征在于,所述方法,包括:在
PHP
领域中,
Nginx
主机:负责接收请求和返回响应,接收的请求中携带的路由,并解析路由,并转发到相关的
location
块中,并转发到相关的网关反向代理模块中;网关反向代理模块: 通过正则匹配,分离版本号和请求参数的类型(文件类型和
API
类型)和请求参数,在通过反向代理(
proxy_pass
关键字),到相关版本的负载均衡中寻找业务主机的
IP+port,
并携带参数由业务主机处理;负载均衡模块:负责相关的算法(轮询
、
权重
、iphash、least_conn
等)找到相关业务主机的
IP+port
,并返回主机信息给网关反向代理模块;业务主机:
php
‑
fpm+php
组成的可独立访问的主机,
php
‑
fpm
将反向代理携带的参数拦截,并再次确认路由
+
参数交由相关的
PHP
模块进行业务处理并响应结果集;配置访问错误的
json
:处理错误,如果访问的版本
、
路由
、
参数
、
主机等出现错误,并返回
json
类型的错误;配置
API
秘钥认证:配置后,检查访问的
API
是否携带秘钥,来确保安全性
。2.
所述权利要求1中的
Nginx
主机,其特征在于,所述方法,包括:
A1
中用户发起访问,例如:
https://api.xxx.com/client/v1.0.11/product?a=1&b=2,
并且在
http
请求头中携带
$http_apikey
的鉴权参数
。
其中
https://api.xxx.com
访问
Nginx
主机,
client
为网关名(即要访问的系统名称),
v1.0.11
为版本号,
product
为路由,
a=1&b=2
为请求参数,
$http_apikey
为鉴权参数;
A2.1
步骤中,引入图5的网关配置文件;
A2.3
步骤中,引入图
10
的
API
鉴权文件;
A2.4
步骤中,引入图9的返回
API
错误的
json
配置文件;
A2.5
步骤中,通过
location
块匹配
client
,将
A1
中的版本号,路由,参数,鉴权参数交给
client
网关反向代理模块处理
。3.
所述权利要求1中的网关反向代理模块,其特征在于,所述方法,包括:
A3.1
步骤中,检测
$http_apikey
是否正确,如果不正确则使用
A2.4
步骤返回给我用户错误信息;
A3.2
步骤中,通过正则匹配,确定请求的是文件资源还是
API
资源;
A3.3
步骤中,提取版本号也就是
v1.0.11
,
API
路由也就是
product
,请求参数也就是
a=1&b=2
;
A3.4
步骤中,通过上述解析后通过
proxy_pass
找到相关的负载均衡器,也即 proxy_pass http://client_v1.0.11/product?a=1&b=2
;
A3.5
步骤中,假设在
client_v1.0.11
的负载均衡器中找到了如下主机,
10.0.0.2:15012,
最后组与路由和参数组成如下:
proxy_pass http:10.0.0.2:15012/product?a=1&b=2。4.
所述权利要求1中的负载均衡模块,其特征在于,所述方法,包括:
A4.1
步骤中,就是通过
client_v1.0.11
的负载均衡器的名字和特定算法找到了相关
ip+port
,并返回给反向代理模块
。5.
所述权利要求1中的业务主机,其特征在于,所述方法,包括:
A5
中的业务主机由
Nginx
和
php
‑
fpm
组成的可独立访问的主机;
A5.1
步骤中,也即
http:10.0.0.2:15012/product?a=1&b=2 这个请求,交给业务主机的
Nginx
处理,提取路由
product
和参数
a=1&b=2
;
A5.2
步骤中,将路由
product
和参数
a=1&b=2
交给
php
‑
fpm
处理;
A5.3
步骤中,返回响应结果集
。6.
所述权利要求 1 中的配置访问错误的 json
,其特征在于,所述...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。