与Heroku分开前端和后端

alt*_*ler 17 deployment heroku

我有一个应用程序,我们称之为derpshow,它由两个存储库组成,一个用于前端,一个用于后端.

我想使用Heroku部署这些,最好是在同一个域上.我还想将两个部分的管道分开使用,每个管道都有一个分段和生产环境.

是否可以让两个应用程序在同一个域上运行,以便前端可以调用后端/api/*?另一种选择是服务于后端api.derpshow.com和前端,app.derpshow.com但这在一定程度上使安全性变得复杂.

这方面的最佳做法是什么?前端只是静态文件,所以它甚至可以从S3或类似的服务,但我仍然需要登台和生产环境和自动测试等等.

任何意见是极大的赞赏!

Joz*_*han 10

对于您的尝试,您必须使用Web服务器来提供静态内容,并提供对容纳您的应用程序的容器(gunicorn,tomcat等等)的访问权限.这也是最佳做法.

假设你使用nginx作为webserver,因为它更容易设置.nginx配置文件看起来像这样

# Server definition for project A
server {
    listen             80;
    server_name        derpshow.com www.derpshow.com;

    location / {
        # Proxy to gUnicorn.
        proxy_pass             http://127.0.0.1:<projectA port>;
        # etc...
    }
}

# Server definition for project B
server {
    listen             80;
    server_name        api.derpshow.com www.api.derpshow.com;

    location / {
        # Proxy to gUnicorn on a different port.
        proxy_pass             http://127.0.0.1:<projectBg port>;
        allow   127.0.0.1;
        deny    all;
        # etc...
    }
}
Run Code Online (Sandbox Code Playgroud)

就是这样.

老问题:尝试使用nginx-buildpack,它允许你在Heroku上的app服务器前运行NGINX.然后,您需要在不同的端口上运行您的应用程序,并将一个端口设置为api.derpshow.com,将其他端口设置为app.derpshow.com,然后您只能从localhost限制对api.derpshow.com的调用.