找不到Dokku子域

时间:2019-04-02 22:38:44

标签: nginx subdomain digital-ocean dokku

我将一个应用程序部署到了我的Digital Ocean Dokku实例,并使用https://example.com(使用letencrypt 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>网络部分,我的newDomain.com拥有Digital Ocean NS记录以及A记录到我Droplet的IP。

这与我的nginx设置或letsencrypt有什么关系吗?

1 个答案:

答案 0 :(得分:0)

有可能,我已经用数字海洋飞沫完成了几次,最后您将拥有迷你Heroku。使它工作起来有点棘手,但我将尝试解释复制它的步骤。

首先,您需要使用dokku部署DO Drop以开始使用,并记住在安装时选择选项“应用程序的用户viartualhost命名”。

In your DNS you will have to configure an A record to access your server with a domain that will hold your apps

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

到目前为止,我们应该检查是否可以使用以下链接访问应用程序(到目前为止,仅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。为了让encrypt获得新域名的新证书。需要访问www.acmewebsite.com,这就是为什么我们首先需要放置DNS CNAME的原因。请记住在服务器上安装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的域中运行两个shinny应用程序。

希望有帮助。