#nginx #subdomain #digital-ocean #dokku
#nginx #поддомен #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> Сеть у my newDomain.com
есть записи NS Digital Ocean, а также A
запись на IP-адрес моего Droplet.
Может ли это иметь какое-то отношение к моей nginx
настройке или letsencrypt
?
Ответ №1:
Это возможно, я делал это несколько раз с помощью DigitalOcean droplets, и наконец-то у вас будет свой мини-Heroku. Заставить его работать довольно сложно, но я попытаюсь объяснить свои шаги по его репликации.
Прежде всего, вам нужно развернуть свой DO droplet с помощью Dokku, чтобы начать. Не забудьте выбрать опцию «Использовать имена виртуальных хостов для приложений» во время установки!
В вашем 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>
Теперь вам нужно развернуть два ваших приложения на сервере, чтобы начать настройку. Создайте приложения и разверните их (используйте 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
Убедитесь, что вы можете получить доступ к приложениям, используя домены 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
После всего этого беспорядка у вас должно быть два блестящих приложения, запущенных в их собственных доменах с включенным HTTPS.
Надеюсь, это поможет.