首页 > 解决方案 > 使用代理重写 Caddy

问题描述

我正在尝试使用 Caddy 托管一个 react 应用程序,其中一些端点重定向到其他 docker 容器,其余的重写到基本 url(也就是 react 应用程序的 index.html 文件)。

但是代理不会转发到其他容器,它只是显示反应应用程序。

如何让它显示 api 页面而不是 react 应用程序?

example.com {
    gzip    
    root /app/frontend

    proxy /staticfiles django:8000 {
        transparent
    }
    proxy /api django:8000 {
        transparent
    }

    proxy /admin django:8000 {
        transparent
    }

    rewrite {
        to .* /index.html
    }
}

标签: reactjsdockerproxyreverse-proxycaddy

解决方案


我认为这可能是指令订购问题,或者缺乏订购。例如,如果rewrite之前发生过proxy,我不确定。您可以尝试将配置重写为使用球童站点地址首先匹配最长的事实。所以是这样的:

example.com {
    gzip    
    root /app/frontend

    rewrite {
        to .* /index.html
    }
}
example.com/staticfiles example.com/api example.com/admin {
    proxy / django:8000 {
        transparent
    }
}

推荐阅读