如何使用Google云端固定IP为Heroku应用提供服务

4
我有一个使用nodejs提供静态网页的Heroku应用程序:https://foda-app.herokuapp.com 由于Heroku没有提供固定IP,我需要在个人项目中使用Google Cloud的VPC保留的静态外部IP地址。
我已经成功保留了IP地址,但是不确定该如何将其与我的Heroku应用程序连接起来,因为Google Cloud提供了如此多的选项和服务。我只想将所有流量从这个IP重定向到Heroku应用程序,但我无法找到简单的方法来实现它。
我需要创建一个全局转发规则,但是我找不到在不使用其他服务的情况下实现它的方法。我需要一个VM实例吗?我需要一个负载均衡器吗?我应该使用VPC路由还是Cloud DNS?我被所有这些服务淹没了。
请问是否可能并告诉我最简单的方法是什么?

1
使用谷歌云DNS更新CNAME记录为herokuapp的URL。 - sparsh turkane
我使用谷歌云DNS创建了一个新的DNS区域,现在我应该添加一个指向URL或Heroku DNS的新CNAME记录?我应该使用什么DNS名称? - rafaelcastrocouto
1
你能详细解释一下为什么你“个人项目中确实需要[固定 IP]”吗?根据你的技术需求,使用Google Cloud可能并不能满足你的预期。 - Chris
我正在尝试使用Handshake项目命名空间新域 https://namebase.io/handshake-whitepaper/。 - rafaelcastrocouto
1个回答

3
您可以通过以下两种方式实现此目标。-
  1. 在Heroku上使用第三方插件,例如https://devcenter.heroku.com/articles/quotaguardstatic

  2. 在静态IP上设置代理服务器,并将所有流量重定向到所需的Heroku URL。

步骤2的详细信息 -
  1. 为新的VM实例分配一个静态外部IP地址https://cloud.google.com/compute/docs/ip-addresses/reserve-static-external-ip-address

  2. 在新采购的VM上安装Nginx / HAProxy。

  3. 设置以下配置 -

    upstream heroku-1{ server foda-app.herokuapp.com fail_timeout=15s; } server{ listen 80; server_name yourdomain.example or ip address location / { proxy_pass http://heroku-1; proxy_read_timeout 300; } }

  4. 更改您的域名(如果有)的DNS映射以指向静态IP。


感谢@mdeora,由于Heroku插件不提供免费服务,您能否详细说明如何在Google Cloud静态IP上设置代理服务器? - rafaelcastrocouto
我会尝试一下,但似乎在实例上安装代理服务器仅仅为了重定向流量有些过头了。如果您能详细解释一下如何操作,我将给予您奖励。 - rafaelcastrocouto
1
你需要调试出错的具体内容。查看错误日志文件 /var/log/nginx/error.log - mdeora
1
https://websiteforstudents.com/setup-nginx-reverse-proxy-apache2-ubuntu-17-04-17-10/ - mdeora
我最终编辑了默认的nginx html以进行重定向,并且我了解到为了正确提供https服务,我需要自定义凭据(而我不想要任何凭据)。无论如何,固定IP现在正在工作,感谢您的帮助。 - rafaelcastrocouto
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接