问题描述
我刚刚发现 jelastic,我在运行 Strapi 时遇到了困难。
到目前为止,我只有一个节点,即一个 Docker Strapi 镜像,带有 SLB(没有特定的负载均衡器)。
该节点通过SLB访问,公网IPv4和IPv6均可用。
我将子域重定向到这些公共 IP
我可以在容器中启动 Strapi。但是,由于两个问题,它不能很好地工作:
-
SSL 不可用。我无法安装 Let's Encrypt Free SSL:“无法在此节点上安装附加组件”...
-
端口未重定向,我必须在浏览器 url 中明确指明端口才能访问应用主页。
由于这两个问题,Strapi 无法正常工作。
为 Docker 容器设置了 DOCKER_EXPOSED_PORT 1337 和 MASTER_IP。
如何解决这两个问题?
解决方法
SSL 不可用。我无法安装 Let's Encrypt Free SSL:“ 无法在此节点上安装附加组件"...
Jelastic Let's Encrypt add-on 可以轻松安装在任何启用了自定义 SSL 支持的容器之上,即以下服务器(列表不断扩展):
负载均衡器 - NGINX、Apache LB、HAProxy、Varnish
Java 应用服务器 - Tomcat、TomEE、GlassFish、Payara、Jetty
PHP 应用服务器 - Apache PHP、NGINX PHP
Ruby 应用服务器 - Apache Ruby、NGINX Ruby
如果您需要为任何其他堆栈使用 Let's Encrypt SSL,只需在您的应用程序服务器前添加一个负载均衡器并安装该插件即可。默认情况下,集群拓扑中使用负载平衡级别的 SSL 终止。 Docker 容器不在支持的节点列表中。
端口未重定向,我必须在 用于访问应用主页的浏览器网址。
当使用外部IP地址时,为了正确转发,您可以在iptables中添加两条重定向规则,将80或443端口的所有请求重定向到1337,例如:
*nat
-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 1337
*filter
-A INPUT -p tcp -m tcp --dport 1337 -m state --state NEW -j ACCEPT