nginx - 找不到 Dokku 子域

标签 nginx subdomain digital-ocean dokku

我将一个应用程序部署到我的 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/

相关文章:

graphql - 使用 psql 连接到在 Digital Ocean Droplet 中创建的 Hasura 上的 postgres 实例

node.js - pm2 --watch 每隔 3 秒记录一次,与配置文件无关

nginx - 您将如何使用 Hashicorp 的 Nomad 'template stanza' 通过 Nomad 作业文件生成 nginx 配置文件?

node.js - DigitalOcean Server CPU 100% 没有应用程序运行

php - 使用 nginx 在 linux 服务器上部署 Laravel 应用程序出现 404 错误

ruby-on-rails - 为不同的用户类型添加子域

wordpress - 子域上的 https 重定向到主域;子域在没有 https 的情况下工作

PHP从子域获取域名

ssl - digital ocean 上的 ERR_SSL_VERSION_OR_CIPHER_MISMATCH

node.js - 同一 VPS 上的 PHP 网站和 Nodejs 应用程序