当前位置: 首页 > 专利查询>田雨专利>正文

基于制造技术

技术编号:39835224 阅读:12 留言:0更新日期:2023-12-29 16:19
基于

【技术实现步骤摘要】
基于Nginx和PHP七层负载均衡网关的方法


[0001]在计算机编程语言
PHP
领域中,与
Nginx
相结合的七层负载均衡网关的方法


技术介绍

[0002]随着互联网的发展,业务量的增大

前后端分离

开发人员数量增加

开发测试生产环境的一致性

以及
CDN、
流量控制

权限控制等更精细化的操作增加,再有目前微服务架构的盛行,就衍生出大量的网关设计

包括各大云厂商(阿里云

腾讯云等)都支持各种语言统一接入网关,在云上统一管理,但是在目前主流云厂商平台中,对
PHP
这门语言的接入不太友好,
JAVA、GO、C
等语言有良好的接入文档,但
PHP
的接入文档很模糊

[0003]在传统的
PHP
开发中,以单体架构为主,单体项目包含多个模块,通过不同的入口文件或路由控制,访问不同的模块

随着开发人员的增多

业务模块的增多,单体架构中多个开发人员同时在一个项目中进行开发会导致代码冲突,上线的时候需要等所有人员全部开发完毕才能部署,降低了迭代的时间

各个模块的访问量,也可能不一样,以及上述
CDN、
流量控制

权限控制等更精细化的操作,如果限制可能会导致其他模块的崩溃

在开发

测试

生产等环节还需要统一的环境,访问规则,以及多版本控制等,就需要统一的网关进行管理

[0004]随着微服务的架构的诞生,单体架构拆中的模块拆分成多个独立项目的系统,统一接入网关进行管理势在必行

多个独立项目还需要分别部署不同的主机,那么每个项目可以独立获得不同量的资源

能大大的节省服务器的开销

[0005]在
Nginx
中早期的网关都是使用的
rewrite
重写规则进行的,在现在
Nginx
的最佳实践是通过
location
块进行路由请求


技术实现思路

[0006]有鉴于此,为了克服在
PHP
领域技术的不足,本专利技术提供了基于
Nginx

PHP
相结合的方式提供七层负载均衡网关的方法

本专利技术通过域名
+
版本号
+
路由
+
参数这种基础通用的访问方式,通过域名访问
Nginx
主机,主机通过解析路由匹配到相关
location
块,在相关
location
块中通过反向代理到相关的负载均衡器中通过相关算法寻找到合适的
IP+port
,携带参数,由转发给业务主机处理相关逻辑,最后的业务主机内包含
php

fpm

php
,其中
php

fpm
再次通过路由
+
参数最终确认由哪个
PHP
模块进行业务处理并响应结果集

[0007]一方面,本专利技术,基于
Nginx

PHP
七层负载均衡网关的方法包括:
Nginx
主机:负责接收请求和返回响应,接收的请求中携带的路由,并解析路由,并转发到相关的
location
块中,并转发到相关的网关反向代理模块中;网关反向代理模块: 通过正则匹配,分离版本号和请求参数的类型(文件类型和
API
类型)和请求参数,在通过反向代理(
proxy_pass
关键字),到相关版本的负载均衡中寻找业务主机的
IP+port,
并携带参数由业务主机处理;负载均衡模块:负责相关的算法(轮询

权重
、iphash、least_conn
等)找到相关业
务主机的
IP+port
,并返回主机信息给网关反向代理模块;业务主机:
php

fpm+php
组成的可独立访问的主机,
php

fpm
将反向代理携带的参数拦截,并再次确认路由
+
参数交由相关的
PHP
模块进行业务处理并响应结果集;配置访问错误的
json
:处理错误,如果访问的版本

路由

参数

主机等出现错误,并返回
json
类型的错误;配置
API
秘钥认证:配置后,检查访问的
API
是否携带秘钥,来确保安全性;上述基于
Nginx

PHP
七层负载均衡网关的专利技术功能模块

附图说明
[0008]为了更清楚的说明本专利技术的具体实施步骤,和上述思想中代码部分的配置情况,对所需要使用的附图进行介绍:图1为基于
Nginx

PHP
的网关访问流程示意图;图2为
Nginx

PHP
工作流程图;图3为本专利技术的代码部分的目录结构示意图;图4为图3中目录结构中
nginx.conf
配置文件代码示意图;图5为图3中目录结构中
api_gateway.conf
配置文件代码示意图;图6为图3中目录结构中
client.conf
配置文件代码示意图;图7为图3中目录结构中
mch.conf
配置文件代码示意图;图8为图3中目录结构
channel.conf
配置文件代码示意图;图9为图3中目录结构中
api_json_errors.conf
配置文件代码示意图;图
10
为图3中目录结构中
api_keys.conf
配置文件代码示意图;图
11
为图3中目录结构中
api_upstream/client/v1.0.10.conf
配置文件代码示意图;图
12
为图3中目录结构中
api_upstream/client/v1.0.16.conf
配置文件代码示意图;图
13
,图
14
,图
15
,图
16
为负载均衡算法配置文件代码示意图;
具体实施的方式
[0009]下面结合附本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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
,其特征在于,所述...

【专利技术属性】
技术研发人员:田雨
申请(专利权)人:田雨
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1