我将一个应用程序部署到我的 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 记录以及 A
记录到我的 Droplet 的 IP。这可能与我的
nginx
有关吗?设置或 letsencrypt
?
最佳答案
这是可能的,我已经用 DigitalOcean droplets 做了好几次,你终于拥有了你的迷你 Heroku。让它工作有点棘手,但我会尝试解释我复制它的步骤。
首先,您需要使用 Dokku 部署 DO droplet 才能开始使用。请记住在安装过程中选择“为应用程序使用虚拟主机命名”选项!
在您的 DNS 中,您必须配置一个 A
记录访问您的服务器的域,该域将保存您的不同应用程序(子域)。
创建“基地”A
Dokku 实例的记录可以使其更容易访问,但不是必需的(仅影响实例,而不影响应用子域!)。
# Enable app subdomain routing
A *.apps.example.com <public IP address>
# Optional subdomain for Dokku instance
A apps.example.com <public IP address>
现在您需要在服务器上部署您的两个应用程序以开始配置。创建应用程序并部署它们(如果您需要帮助来部署它,请使用谷歌)。最后,您应该在服务器中看到: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 )需要可访问。这就是为什么我们首先需要放置 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
在所有这些困惑之后,您应该有两个 Shiny 的应用程序在它们自己的域中运行,并启用了 HTTPS。希望这可以帮助。
关于nginx - 找不到 Dokku 子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55484498/