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上處理代理請求 。