bad gateway是什么意思? bad gateway是什么意思?怎么解决?



文章插图
bad gateway是什么意思? bad gateway是什么意思?怎么解决?

文章插图
在本篇中,您将了解如何通过路由暴露服务 。
服务和路由是什么?
服务和路由对象允许您使用Kong Gateway向客户端暴露服务 。在配置对API的访问时,您将从指定一个服务开始 。在Kong Gateway中,服务是表示外部上游API或微服务的实体——例如,数据转换微服务、账单API等等 。
服务的主要属性是它的URL,服务在其中监听请求 。可以使用单个字符串指定URL,也可以分别指定其协议、主机、端口和路径 。
在开始对服务发出请求之前,需要向其添加一个路由 。路由决定请求在到达Kong Gateway后如何(以及是否)发送到它们的服务 。
单个服务可以有多个路由 。配置好服务和路由后,您就可以开始通过Kong Gateway发出请求了 。
此图说明了通过服务路由到后端API的请求和响应的流量 。
服务路由到后端API的请求和响应的流程
添加服务
出于本例的目的,您将创建一个指向Mockbin API的服务 。Mockbin是一个“echo”类型的公共网站,它将请求作为响应返回给请求者 。这种可视化将有助于了解Kong Gateway如何代理API请求 。
Kong Gateway在端口8001上公开RESTful管理API 。网关的配置(包括添加服务和路由)是通过请求Admin API完成的 。
可以通过以下三种方式添加:
Admin API
1.使用名称example_service和URL http://mockbin.org定义服务 。
使用cURL:
$ curl -i -X POST http://<admin-hostname>:8001/services--data name=example_service--data url='http://mockbin.org'或者使用HTTPie:
$ http POST :8001/services name=example_service url='http://mockbin.org'如果服务成功创建,您将收到一条201成功消息 。
2.验证服务的端点 。
使用cURL:
$ curl -i http://<admin-hostname>:8001/services/example_service或者使用HTTPie:
$ http :8001/services/example_serviceKong Manager
1.在Kong Manager的Workspaces选项卡上,滚动到工作区部分并单击默认工作区 。这个示例使用默认的工作空间,但是您也可以创建一个新的工作空间,或者使用一个现有的工作空间 。
2.向下滚动到Services并单击Add a Service 。
3.在创建服务对话框中,输入名称example_service和URL http://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.orgname: example_serviceport: 80protocol: http2.保存文件 。从您的终端,同步配置以更新Kong:
$ deck sync该消息应该显示您正在创建一个服务:
creating service example_service Summary: Created: 1 Updated: 0 Deleted: 0添加路由
要想通过Kong Gateway访问该服务,您需要为其添加一个路由 。
可以通过以下三种方式添加:
Admin API
为客户端请求的特定路径服务(example_service)定义一个路由(/mock) 。注意,要使路由与服务匹配,必须设置至少一个主机、路径或方法 。
使用cURL:
$ curl -i -X POST http://<admin-hostname>:8001/services/example_service/routes--data 'paths[]=/mock'--data name=mocking或者使用HTTPie:
$ http :8001/services/example_service/routes paths:='["/mock"]' name=mocking一条201消息表示路由已成功创建 。
Kong Manager
1.在example_service概览页面中,向下滚动到Route部分并单击New Route 。Create Route对话框将显示自动填充服务名称和ID号的服务字段 。此字段是必需的 。注意:如果服务字段没有自动填充,请单击左侧导航窗格中的Services 。找到您的服务,单击id字段旁边的剪贴板图标,然后返回到创建路由页面并将其粘贴到服务字段 。
2,为路由输入一个名称,以及至少以下字段中的一个:主机、方法或路径 。对于这个例子,使用以下方法:
名字输入“mock” 。路径,单击添加路径并进入/mock 。
3.单击Create 。
创建路由后,您将自动重定向回example_service概览页面 。新路由出现在路由部分的下面 。
decK (YAML)
1.将以下内容粘贴到kong.yaml文件,在example_service条目下:
routes: - name: mockingpaths:- /mockstrip_path: true你的文件现在应该是这样的:
_format_version: "1.1" services: - host: mockbin.orgname: example_serviceport: 80protocol: httproutes:- name: mockingpaths:- /mockstrip_path: true2.同步配置:
$ deck sync3.你可以用Kong现在使用的配置更新你的本地文件(可选):
小心!任何后续的堆转储将覆盖现有的kong.yaml文件 。根据需要创建备份 。
$ deck dump另外,在同步对配置的更改时,您还将在decK显示的差异中看到此配置 。
你会注意到服务和路由现在都有了你没有显式设置的参数,这些是每个服务和路由创建时使用的默认参数:
services: - connect_timeout: 60000host: mockbin.orgname: example_serviceport: 80protocol: httpread_timeout: 60000retries: 5write_timeout: 60000routes:- name: mockingpaths:- /mockpath_handling: v0preserve_host: falseprotocols:- http- httpsregex_priority: 0strip_path: truehttps_redirect_status_code: 426你可以这样做后,任何deck同步看到Kong Gateway的最新配置 。
本指南的其余部分继续使用配置文件的简化版本,但不为每个步骤执行deck转储,以使其易于遵循 。
验证路由将请求转发给服务Admin API
使用Admin API,发出以下信息:
使用cURL:
$ curl -i -X GET http://<admin-hostname>:8000/mock/request或者使用HTTPie:
$ http :8000/mock/requestWeb浏览器
【bad gateway是什么意思? bad gateway是什么意思?怎么解决?】默认情况下,Kong在端口8000上处理代理请求 。