docker APISIX网关设置

lymgl2op  于 2023-05-28  发布在  Docker
关注(0)|答案(2)|浏览(200)

我正在尝试为我的微服务创建APISIX网关。我已经使用docker安装了APISIX网关,使用的是apisix文档Getting started(https://apisix.apache.org/docs/apisix/getting-started/README/)Version 3.3.0。它适用于路由:

curl -i "http://127.0.0.1:9180/apisix/admin/routes" -X PUT -d '
{
  "id": "getting-started-ip",
  "uri": "/ip",
  "upstream": {
    "type": "roundrobin",
    "nodes": {
      "httpbin.org:80": 1
    }
  }
}'

并且curl "http://127.0.0.1:9080/ip"它返回期望的响应。
现在我想把上游改为localhost:XXXX。我的虚拟API服务器运行在localhost:XXXX(不在docker上)
如果我执行curl "http://localhost:XXXX/api/v1/test_server/testing",它将返回{ success: true}作为json
现在我想改变apisix上游作为虚拟的api服务器,即. localhost:XXXX,所以所做的就是更改上游:

curl -i "http://127.0.0.1:9180/apisix/admin/routes" -X PUT -d '
{
  "id": "1",
  "uri": "/api/v1/test_server/testing",
  "upstream": {
    "type": "roundrobin",
    "nodes": {
      "localhost:XXXX": 1
    }
  }
}'

但当我尝试做curl "http://127.0.0.1:9080/api/v1/test_server/testing"它显示

<html>
<head><title>502 Bad Gateway</title></head>
<body>
<center><h1>502 Bad Gateway</h1></center>
<hr><center>openresty</center>
<p><em>Powered by <a href="https://apisix.apache.org/">APISIX</a>.</em></p></body>
</html>

在APISIX的docker日志中显示

connect() failed (111: Connection refused) while connecting to upstream, client: localhost, server: _, request: "GET /api/v1/test_server/testing HTTP/1.1", upstream: "http://localhost:XXXX/api/v1/test_server/testing", host: "<host ip and port>"

你能帮助我为什么它不能建立连接到我的本地服务器。
先谢谢你了

drnojrws

drnojrws1#

1.你可以在Docker容器中部署APISIX。
1.你有一个服务在Docker容器之外运行。
1.您不能在Docker容器中使用“localhost:xxxx”,因为APISIX会尝试访问Docker容器中的localhost,而不是您的主机。
此问题与您的Docker知识有关,请勾选From inside of a Docker container, how do I connect to the localhost of the machine?

u3r8eeie

u3r8eeie2#

我遇到了同样的问题,这可能是与Docker网络相关的网络问题,尝试将您的虚拟API服务器Dockerize并在docker-compose文件中配置的apisix的同一网络中运行它
AS 502通常是因为您无法通过apisix访问您的上游服务。在docker中,如果你想访问你的主机服务,你可以将上游主机名从localhost更改为host.docker.internal(如果你使用的是macOS),或者172.17.0.1(如果你使用的是Linux),并尝试看看是否可以通过APISIX访问

相关问题