当前位置: 首页 > 知识库问答 >
问题:

在自定义域/URL上公开API网关

史商震
2023-03-14

我有设置香港API网关以下留档在这里。通过下面的curl命令,我可以确认Kong已经启动并通过localhost响应。

curl -i http://localhost:8001/services
    
    HTTP/1.1 200 OK
    Date: Thu, 13 May 2021 15:39:32 GMT
    Content-Type: application/json; charset=utf-8
    Connection: keep-alive
    Access-Control-Allow-Origin: http://localhost:8002
    X-Kong-Admin-Request-ID: xeUkwshQPRXA5T9bPQmxsmPcspJCGU2L
    vary: Origin
    Access-Control-Allow-Credentials: true
    Content-Length: 23
    X-Kong-Admin-Latency: 5
    Server: kong/2.3.3.2-enterprise-edition

我的问题是,对于生产,如何配置Kong以响应DNS/URL?

我已经在AWS路由53上设置了一个DNS记录,以将流量指向部署Kong的此服务器的IP。有了一个独立的应用程序——一个节点/快递应用程序,我将设置一个反向代理,即NGINX,将收到的请求从网址路由到服务器,再到应用程序。然而,由于Kong是API网关,这是不合适的。

总结,;

  • 我想从客户端向网关发出API请求,地址:http://my-gateway-url.com/service-name/route
  • 此请求应由Kong处理,并由配置的服务处理。如何将Kong配置为http://my-gateway-url.com监听?

共有1个答案

姚煜
2023-03-14

如果要基于主机进行路由,这是一个经典功能。

首先创建服务(您的节点应用程序):

然后创建一条路线:

然后可以测试路线是否匹配

curl -i --header 'kong-debug: 1' http://my-gateway-url.com:8000

HTTP/1.1 502 Bad Gateway
Date: Fri, 14 May 2021 08:11:54 GMT
Content-Type: text/plain; charset=utf-8
Connection: keep-alive
Kong-Route-Id: 9f5584d7-4ac5-4720-a90c-f809c47faf8d
Kong-Route-Name: my_gw
Kong-Service-Id: 77443f69-80f4-49ea-b910-77eebdeb9385
Kong-Service-Name: node_app
Server: kong/2.0.3
Content-Length: 58

与…相比

curl -i --header 'kong-debug: 1' 0.0.0.0:8000
HTTP/1.1 404 Not Found
Date: Thu, 13 May 2021 20:11:23 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Content-Length: 48

{"message":"no Route matched with those values"}

另一件需要检查的事情是哪个端口不能暴露80或8000,并检查路由是否在您的安全水位上打开(例如AWS上的安全组)。

 类似资料:
  • AWS文件说, 私有API不支持自定义域名。 来源:https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-apis.html 这到底是什么意思?我可以将自定义域名附加到私有API。 然而,我面临着SSL证书的问题。

  • 我是API网关的新手。我尝试使用“自定义授权程序”。我遵循了下面的文档,并使用了网站提供的示例代码。https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html “令牌类型的lambda授权者”是工作的。 但是... 我对“请求类型”感到困惑,不知道如何将quer

  • 我正在尝试为带有自定义endpoint的S3 bucket使用预签名的url。我似乎如此接近,但我不断得到一个方法不允许的错误。我就在这里。 此代码成功地返回一个url,该url似乎包含所有正确的查询参数、正确的键名,并且该url指向我的endpoint。但是,当尝试上载时,我收到以下错误: 此资源不允许使用指定的方法。PutService[请求id在此][主机id在此] 如果我从S3配置中删除自

  • Mono Apr 10 09:42:35 UTC 2017:转换后的endpoint请求主体:{“Type”:“Token”,“AuthorizationToken”:“ABC123”,“MethodArn”:“arn:aws:execute-api:ap-southeast-1:007183653813:OHLQXU9P57/null/Get/”}Mono Apr 10 09:42:36 UTC

  • 更新时间:2019-06-12 10:28:29 默认域名 平台会为您生成该项目下所有服务可用的二级域名,可在顶部菜单“发布”-“域名管理”查看默认域名及自定义域名。默认域名是为了便于您调试API时使用,是http协议。如果您需要使用https协议的域名,或者将服务进行商业化使用,则需要在“域名管理”-“自定义域名”处进行自定义域名绑定及https证书的上传。 请注意,默认域名有限流策略。同一个默

  • 所有在 Gitbook.com 上的书的http地址为 http://{author}.gitbooks.io/{book}/,而书内容的地址是 http://{author}.gitbooks.io/{book}/content/。 但是你也可以使用你自定义的域名(GitBook的免费功能)。域名可以绑定到你的主页或者内容上(或两者都)。 很容易就可以添加一个自定义域名。 GitBool.com