0

为了减少 CORS 的问题并能够使用一个 SSL 证书,我想用一个域运行所有 flynn 应用程序:

我的“外部”服务

内部服务

  • 雷迪斯
  • postgres

$ flynn 路线(示例)

http:api.service.example.com        api
http:frontend.service.example.com   frontend
http:docs.service.example.com       docs
... 

为了简单起见,我的想法是使用 NGINX 作为反向代理来处理路由和 SSL 处理——但是我应该把它放在哪里呢?

我可以添加一个 NGINX 作为一个 flynn 应用程序,它监听 example.com,然后使用locationproxy_pass功能。但是当 NGINX 从https://example.com反转到http://frontend.service.example.com我这里没有 SSL - 对吗?

如何确保 NGINX 仅在“内部”路由?flynn 是否有更好的方法 - 或者只是使用 dokku。

4

1 回答 1

2

您可以使用 Flynn 使用内置功能来做到这一点,无需使用外部反向代理。

首先,添加example.com一个有效的 TLS 证书:

flynn -a frontend route add http example.com --tls-cert cert_chain.pem --tls-key cert_key.pem

cert_chain.pem文件应包含 PEM 编码的证书,后跟一个或多个中间证书,以将链构建到受信任的根。

cert_key.pem文件应包含 PEM 编码的私钥(未应用加密)。

然后为每个其他应用添加基于路径的路由。该路径将被视为前缀,因此所有子路径也将与路由匹配,并且您刚刚添加的 TLS 证书将用于所有子路径,因为它们具有相同的域:

flynn -a api route add http example.com/api
flynn -a admin route add http example.com/admin
flynn -a docs route add http example.com/docs
flynn -a static route add http example.com/static

仅具有基本域的第一条路由将用于所有其他路径。

于 2017-11-24T15:38:32.320 回答