【问题标题】:Calling API endpoint inside docker container在 docker 容器内调用 API 端点
【发布时间】:2023-01-19 18:39:58
【问题描述】:

我有一个在 docker 容器中运行的小型 express 应用程序。端点可通过 http://localhost:8888/api/run 在本地访问。使用此命令运行 docker 容器:

docker run -dp 8888:8888 code-editor

我将 NGINX 配置为使用 location 块提供来自 docker 的响应:

服务器 {

    server_name www.baseURL.tech baseURL.tech;
      -------------------CONNECT WITH APP INSIDE DOCKER--------------------
    location /compiler {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8888/;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

     -------------------CONNECT WITH MAIN NODE APP--------------------
    location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8000/;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

被调用的路径是 https://baseURL/compiler/api/run 作为来自主网站 https://baseURL 的 ajax 请求,但它返回 404。

【问题讨论】:

    标签: docker nginx dockerfile


    【解决方案1】:

    你有

    location /compiler
    

    这导致 Nginx 将整个 URL,即 compiler/api/run 传递给 Express 应用程序。 您希望它删除 compiler 部分,最简单的方法是在该位置的末尾添加一个斜杠,如下所示

    location /compiler/
    

    那么Nginx只会将api/run传递给Express。

    【讨论】:

      猜你喜欢
      • 2019-07-06
      • 2020-01-15
      • 2021-04-16
      • 2018-06-12
      • 2022-12-16
      • 1970-01-01
      • 2022-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多