Node.js Dokku-安装后添加域

Node.js Dokku-安装后添加域,node.js,dns,dokku,Node.js,Dns,Dokku,我在我的数字海洋水滴上安装了Dokku,但在设置dns记录之前安装了,所以Dokku安装在IP上。现在我更改了dns记录,所以可以通过site.com访问该站点。我可以通过site.com:port访问以前创建的Dokku容器,如何更改Dokku设置以访问我的应用程序,如下-appname.site.com每: 设置指向该主机的域和通配符域。确保 /home/dokku/VHOST已设置为此域。默认情况下,它设置为 不管主机的主机名是什么。仅当 主机名可以通过dig(dig+short$(hos

我在我的数字海洋水滴上安装了Dokku,但在设置dns记录之前安装了,所以Dokku安装在IP上。现在我更改了dns记录,所以可以通过
site.com
访问该站点。我可以通过
site.com:port
访问以前创建的Dokku容器,如何更改Dokku设置以访问我的应用程序,如下-
appname.site.com
每:

设置指向该主机的域和通配符域。确保 /home/dokku/VHOST已设置为此域。默认情况下,它设置为 不管主机的主机名是什么。仅当 主机名可以通过dig(dig+short$(hostname-f))解析。否则 您必须手动创建该文件并将其设置为首选文件 域名。如果在推送应用程序时此文件仍然不存在, dokku将发布带有端口号的应用程序(即。 -请注意缺少的子域)


要解决此问题,您首先需要更新/home/dokku/VHOST文件,添加域名——这将修复任何新生成的部署,但需要按名称(/home/dokku/foo、/home/dokku/bar等)从/home/dokku目录中删除现有应用,并重新部署以使此更改生效,由于每个Dokku应用程序在这些/home/Dokku/路径中都有一个单独的nginx.conf,因此需要重新编写这些路径。

$echo“example.com”>/home/Dokku/VHOST

扩展:应用这些更改不需要重新创建(销毁并再次创建)应用程序。您可以在
/home/dokku/$APP/
目录中手动创建VHOST文件(作为dokku用户),然后删除NO_VHOST设置(
dokku配置:取消设置$APP NO_VHOST
)并将
dokku NGINX端口
更改为80(
dokku配置:设置$APP dokku NGINX端口=80
)并重新启动应用程序(
dokku ps:restart$APP
).

确实没有必要销毁和重新创建应用程序。首先,
dokku-domains:report
会告诉您是否已启用全局vhost。如果没有,就跑

dokku domains:add-global yourdomain.tld
echo yourdomain.tld | sudo tee -a /home/dokku/VHOST
dokku domains:add myapp myapp.yourdomain.tld
dokku domains:enable myapp

第一个选项将yourdomain.tld添加到/home/dokku/HOSTNAME。它还应该将它添加到/home/dokku/VHOST,但它没有。因此,这需要手动完成。然后告诉dokku您想要访问myapp的(子)域。最后一个命令将myapp的NO_VHOST变量设置为false。

如果您仍然可以添加子域。这些是需要检查的要点

示例:添加
myapp.Example.com

1,域名系统(如namesheap)

如果您正在使用Cloudflare,请检查自定义DNS是否设置为Cloudflare

2,CDN(如Cloudflare)

检查它是否有这样的记录

Type  |  Name   |   Content 
A     |  myapp  |  public ip address of Digital ocean server
3,VPS(如数字海洋)

如果您使用Cloudflare,则不必在Digital Ocean上设置域设置

4,Dokku

  • 端口映射设置是否正确<代码>dokku代理:报告检查端口80 映射到容器的端口
  • 服务器正在运行吗?从服务器内部使用
    curl
如果仍然无法找到问题的原因,请手动检查nginx配置文件,如
/home/dokku/appname/nginx.conf
/etc/nginx/nginx.conf

示例
/home/dokku/appname/nginx.conf
文件

server {
  listen      [::]:80;
  listen      80;
  server_name myapp.example.com; 

location    / {
  proxy_pass  http://myapp-3030;
}

upstream myapp-3030 {

  server 172.17.0.4:3030;
}

尝试浏览此文件:
/home/dokku/VHOST
。确实可以使用重置初始dokku配置的方法来访问安装GUI。因为我离开了基于IP的域配置,所以没有VHOST文件,我也不知道它应该包含什么。
/home/dokku/VHOST
文件包含服务器的“顶级”域。例如,如果您想要一个像
app.dokku.me
这样的应用程序名,您的文件将包含
dokku.me
。请注意,您可能需要重新链接容器(例如,如果您使用的是db插件)如果删除然后添加一个应用程序。正确编辑/home/dokku/foo/nginx.conf将保存该步骤删除这些应用程序可能会有些过火,请先尝试
dokku ps:restart
dokku ps:rebuild