Introduced in 0.3.10
domains:add <app> DOMAIN Add a domain to app domains [<app>] List domains domains:clear <app> Clear all domains for app domains:disable <app> Disable VHOST support domains:enable <app> Enable VHOST support domains:remove <app> DOMAIN Remove a domain from app domains:set-global <domain> Set global domain name
Applications typically have the following structure for their hostname:
subdomain is inferred from the pushed application name, while the
domain.tld is set during initial configuration and stored in the
$DOKKU_ROOT/VHOST file. It can then be modified with
dokku domains:set-global. This value is used as a default TLD for all applications on a host.
If a FQDN such as
other.tld is used as the application name, the default
$DOKKU_ROOT/VHOST will be ignored and the resulting vhost URL for that application will be
other.tld. The exception to this rule being that if the FQDN has the same ending as the default vhost (such as
subdomain.domain.tld), then the entire FQDN will be treated as a subdomain. The application will therefore be deployed at
You can optionally override this in a plugin by implementing the
nginx-hostname plugin trigger. For example, you can reverse the subdomain with the following sample
nginx-hostname plugin trigger:
nginx-hostname has no output, the normal hostname algorithm will be executed.
If desired, it is possible to disable vhosts with the domains plugin.
On subsequent deploys, the nginx virtualhost will be discarded. This is useful when deploying internal-facing services that should not be publicly routeable. As of 0.4.0, nginx will still be configured to proxy your app on some random high port. This allows internal services to maintain the same port between deployments. You may change this port by setting
DOKKU_NGINX_SSL_PORT (for services configured to use SSL.)
The domains plugin allows you to specify custom domains for applications. This plugin is aware of any ssl certificates that are imported via
certs:add. Be aware that disabling domains (with
domains:disable) will override any custom domains.
By default, dokku will route any received request with an unknown HOST header value to the lexicographically first site in the nginx config stack. If this is not the desired behavior, you may want to add the following configuration to the global nginx configuration. This will catch all unknown HOST header values and return a
410 Gone response. You can replace the
return 410; with
return 444; which will cause nginx to not respond to requests that do not match known domains (connection refused).
You may also wish to use a separate vhost in your
/etc/nginx/sites-enabled directory. To do so, create the vhost in that directory as
/etc/nginx/sites-enabled/00-default.conf. You will also need to change two lines in the main
Alternatively, you may push an app to your dokku host with a name like "00-default". As long as it lists first in
ls /home/dokku/*/nginx.conf | head, it will be used as the default nginx vhost.