在本篇中,您将了解如何通过路由暴露服务。
服务和路由是什么?服务和路由对象允许您使用konggateway向客户端暴露服务。在配置对api的访问时,您将从指定一个服务开始。在konggateway中,服务是表示外部上游api或微服务的实体——例如,数据转换微服务、账单api等等。
服务的主要属性是它的url,服务在其中监听请求。可以使用单个字符串指定url,也可以分别指定其协议、主机、端口和路径。
在开始对服务发出请求之前,需要向其添加一个路由。路由决定请求在到达konggateway后如何(以及是否)发送到它们的服务。
单个服务可以有多个路由。配置好服务和路由后,您就可以开始通过konggateway发出请求了。
此图说明了通过服务路由到后端api的请求和响应的流量。
服务路由到后端api的请求和响应的流程
添加服务出于本例的目的,您将创建一个指向mockbinapi的服务。mockbin是一个“echo”类型的公共网站,它将请求作为响应返回给请求者。这种可视化将有助于了解konggateway如何代理api请求。
konggateway在端口8001上公开restful管理api。网关的配置(包括添加服务和路由)是通过请求adminapi完成的。
可以通过以下三种方式添加:
adminapi1.使用名称example_service和urlhttp://mockbin.org定义服务。
使用curl:
$curl-i-xposthttp://<admin-hostname>:8001/services
--dataname=example_service
--dataurl=\'http://mockbin.org\'
或者使用httpie:
$httppost:8001/servicesname=example_serviceurl=\'http://mockbin.org\'
如果服务成功创建,您将收到一条201成功消息。
2.验证服务的端点。
使用curl:
$curl-ihttp://<admin-hostname>:8001/services/example_service
或者使用httpie:
$http:8001/services/example_servicekongmanager
1.在kongmanager的workspaces选项卡上,滚动到工作区部分并单击默认工作区。这个示例使用默认的工作空间,但是您也可以创建一个新的工作空间,或者使用一个现有的工作空间。
2.向下滚动到services并单击addaservice。
3.在创建服务对话框中,输入名称example_service和urlhttp://mockbin.org。
4.单击create。
服务被创建,页面自动重定向回example_service概览页面。
deck(yaml)1.在kong网关的kong.yaml文件中,定义一个名为example_service的服务,url为http://mockbin.org:
_format_version:\"1.1\"
services:
-host:mockbin.org
name:example_service
port:80
protocol:http
2.保存文件。从您的终端,同步配置以更新kong:
$decksync
该消息应该显示您正在创建一个服务:
creatingserviceexample_service
summary:
created:1
updated:0
deleted:0添加路由
要想通过konggateway访问该服务,您需要为其添加一个路由。
可以通过以下三种方式添加:
adminapi为客户端请求的特定路径服务(example_service)定义一个路由(/mock)。注意,要使路由与服务匹配,必须设置至少一个主机、路径或方法。
使用curl:
$curl-i-xposthttp://<admin-hostname>:8001/services/example_service/routes
--data\'paths[]=/mock\'
--dataname=mocking
或者使用httpie:
$http:8001/services/example_service/routespaths:=\'[\"/mock\"]\'name=mocking
一条201消息表示路由已成功创建。
kongmanager1.在example_service概览页面中,向下滚动到route部分并单击newroute。createroute对话框将显示自动填充服务名称和id号的服务字段。此字段是必需的。注意:如果服务字段没有自动填充,请单击左侧导航窗格中的services。找到您的服务,单击id字段旁边的剪贴板图标,然后返回到创建路由页面并将其粘贴到服务字段。
2,为路由输入一个名称,以及至少以下字段中的一个:主机、方法或路径。对于这个例子,使用以下方法:
名字输入“mock”。路径,单击添加路径并进入/mock。3.单击create。
创建路由后,您将自动重定向回example_service概览页面。新路由出现在路由部分的下面。
deck(yaml)1.将以下内容粘贴到kong.yaml文件,在example_service条目下:
routes:
-name:mocking
paths:
-/mock
strip_path:true
你的文件现在应该是这样的:
_format_version:\"1.1\"
services:
-host:mockbin.org
name:example_service
port:80
protocol:http
routes:
-name:mocking
paths:
-/mock
strip_path:true
2.同步配置:
$decksync
3.你可以用kong现在使用的配置更新你的本地文件(可选):
小心!任何后续的堆转储将覆盖现有的kong.yaml文件。根据需要创建备份。
$deckdump
另外,在同步对配置的更改时,您还将在deck显示的差异中看到此配置。
你会注意到服务和路由现在都有了你没有显式设置的参数,这些是每个服务和路由创建时使用的默认参数:
services:
-connect_timeout:60000
host:mockbin.org
name:example_service
port:80
protocol:http
read_timeout:60000
retries:5
write_timeout:60000
routes:
-name:mocking
paths:
-/mock
path_handling:v0
preserve_host:false
protocols:
-http
-https
regex_priority:0
strip_path:true
https_redirect_status_code:426
你可以这样做后,任何deck同步看到konggateway的最新配置。
本指南的其余部分继续使用配置文件的简化版本,但不为每个步骤执行deck转储,以使其易于遵循。
验证路由将请求转发给服务adminapi使用adminapi,发出以下信息:
使用curl:
$curl-i-xgethttp://<admin-hostname>:8000/mock/request
或者使用httpie:
$http:8000/mock/requestweb浏览器
默认情况下,kong在端口8000上处理代理请求。
原文标题:手机app出现badgateway修复方法(badgateway是什么意思),如若转载,请注明出处:https://www.dnheimuer.com/tougao/2685.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「东宁黑木耳网」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。