找不到 Dokku 子域

Dokku subdomain cant be found

我向我的 Digital Ocean Dokku 实例部署了一个应用程序,并设置了一个域,使 https://example.com(使用 letsencrypt dokku 插件)指向我的 originalApp。我最近尝试在我的 Dokku 实例上部署第二个应用程序,认为我可以使用 http://newApp.example.com 访问它,并最终使用 new-example.com 访问它。

但是,我无法访问我的新应用程序。 dokku domains:report 产量:

=====> newApp domains information
       Domains app enabled:           true
       Domains app vhosts:            new-example.com newApp.example.com
       Domains global enabled:        true
       Domains global vhosts:         example.com
=====> originalApp domains information
       Domains app enabled:           true
       Domains app vhosts:            example.com
       Domains global enabled:        true
       Domains global vhosts:         example.com

最终目标是让两个独立的域指向各自的应用程序。 (这甚至可能吗?)但目前,我什至无法让子域工作。

我通过 dokku logs newApp

确认该应用是 运行

在 Digital Ocean > Networking 部分,我的 newDomain.com 有 Digital Ocean NS 记录以及我的 Droplet IP 的 A 记录。

这可能与我的 nginx 设置或 letsencrypt 有关吗?

有可能,我已经用 DigitalOcean droplets 做了几次,你终于有了你的 mini-Heroku。让它工作有点棘手,但我会尝试解释复制它的步骤。

首先,您需要使用 Dokku 部署 DO Droplet 才能开始。请记住在安装过程中select选项“为应用程序使用虚拟主机命名”!

在您的 DNS 中,您必须配置一个 A 记录来访问您的服务器,该域将包含您的不同应用程序(子域)。 为 Dokku 实例创建一个“基础”A 记录可以使其更易于访问,但不是必需的(仅影响实例,不影响应用程序子域!)。

# Enable app subdomain routing
A   *.apps.example.com   <public IP address>

# Optional subdomain for Dokku instance
A   apps.example.com     <public IP address>

现在您需要在服务器上部署您的两个应用程序以开始配置。创建应用程序并部署它们(如果您需要帮助来部署它,请使用 google)。最后,您应该会在您的服务器中看到:

root@server-dokku-apps:~# dokku apps:list
=====> My Apps
acme-website
bubba-gump-website

现在您需要为每个 Dokku 应用程序配置域。

root@server-dokku-apps:~# dokku domains:add acme-website www.acmewebsite.com
-----> Added www.acmewebsite.com to acme-website
-----> Configuring www.acmewebsite.com...(using built-in template)
-----> Configuring acme-website.apps.example.com...(using built-in template)
-----> Configuring www.acmewebsite.com...(using built-in template)
-----> Creating https nginx.conf
-----> Running nginx-pre-reload
       Reloading nginx

root@server-dokku-apps:~# dokku domains:add bubba-gump-website www.bubbagump.com
-----> Added www.bubbagump.com to bubba-gump-website
-----> Configuring www.bubbagump.com...(using built-in template)
-----> Configuring bubba-gump-website.apps.example.com...(using built-in template)
-----> Configuring www.bubbagump.com...(using built-in template)
-----> Creating https nginx.conf
-----> Running nginx-pre-reload
       Reloading nginx

检查您是否可以使用默认的 Dokku 域访问应用程序(目前只有 http):

http://acme-website.apps.example.com
http://bubba-gump-website.apps.example.com

如果一切正常,请将每个域配置为指向带有一些 CNAME 记录的正确应用程序。

# In your www.acmewebsite.com DNS records
CNAME   www.acmewebsite.com   www.acmewebsite.com.apps.example.com

# In your www.bubbagump.com DNS records
CNAME   www.bubbagump.com   www.bubbagump.com.apps.example.com

最后一步是在每个应用程序上配置 letsencrypt。要让 letssencrypt 提供新证书,您的新域(例如 www.acmewebsite.com) need to be accessible. This is why we first need to place the DNS CNAME! Remember to install dokku-letsencrypt 在您的服务器上。

# First for acme website
root@server-dokku-apps:~# dokku letsencrypt acme-website

# Finally for buba website
root@server-dokku-apps:~# dokku letsencrypt bubba-gump-website

在所有这些混乱之后,您应该有两个闪亮的应用程序 运行 在它们自己的域中启用了 HTTPS。

希望对您有所帮助。