• Дигитални аксесоари
  • сървър
  • Дигитален живот
  • Политика за поверителност
  • Свържете се с нас
  1. Home
  2. Article
  3. Docker Инсталирайте Nginx

Docker Инсталирайте Nginx

Rsdaa 16/12/2021 1860
В този урок ще разгледаме как да инсталирате Nextcloud с помощта на Docker и Docker Compose. По-конкретно, ще инсталираме Nexcloud заедно с обратен прокси Nginx и Let’s Encrypt SSL в докеризирана среда на CentOS, Ubuntu или Debian. Този урок показва как да разположите Nginx в Docker контейнер. Като контейнеризираме Nginx, ние намалихме режийните разходи на системния администратор. Вече няма да е необходимо да управляваме Nginx чрез мениджър на пакети или да го изграждаме от източника.

Команда Docker Pull. За да инсталирате Sonarr с помощта на Docker, първо ще трябва да вземете най-новата версия на контейнера Sonarr от linuxserver Docker Hub. LinuxServer е хранилище на Docker с няколко контейнера за приложения за HTPC и домашен сървър. Sudo docker pull linuxserver/sonarr Издърпайте готовия Sonarr докер контейнер, като използвате горната команда.

Какво е обратен прокси? Какви са неговите предимства?

Какво е обратен прокси? Обратният прокси е вид сървър, който се намира пред много други сървъри и препраща клиентските заявки към съответните сървъри. След това отговорът от сървъра също се получава и препраща от прокси сървъра към клиента.

Защо бихте използвали такава настройка? Има няколко добри причини за това. Тази настройка може да се използва за настройка на балансьор на натоварването, кеширане или за защита от атаки.

Няма да навлизам в подробности тук. Вместо това ще ви покажа как можете да използвате концепцията за обратен прокси, за да настроите множество услуги на един и същ сървър.

Направете същото изображение като това, което видяхте по-горе. Това, което можете да направите, е да стартирате Ngnix сървър в докер контейнер в режим на обратен прокси. Други уеб услуги също могат да се изпълняват в техните собствени съответни контейнери.

Nginx контейнерът ще бъде конфигуриран по начин, по който знае коя уеб услуга в кой контейнер работи.

Това е добър начин да спестите разходи за хостване на всяка услуга на различен сървър. Можете да имате множество услуги, работещи в един и същи Linux сървър, благодарение на обратния прокси сървър.

Настройване на Nginx като обратен прокси за разполагане на множество услуги на един и същ сървър с помощта на Docker

Нека ви покажа как да конфигурирате гореспоменатата настройка.

С тези стъпки можете да инсталирате множество контейнери за уеб базирани приложения, работещи под Nginx, като всеки самостоятелен контейнер съответства на съответния собствен домейн или поддомейн.

Първо, нека видим от какво се нуждаете, за да следвате този урок.

Предпоставки

Ще имате нужда от следните знания, за да започнете лесно с този урок. Въпреки това можете да минете и без тях.

Linux система/сървър. Можете лесно да разположите Linux сървър за минути с помощта на облачната услуга Linode. Познаване на Linux командите и терминала. Основни познания за Docker. Трябва да имате инсталирани Docker и Docker Compose на вашия Linux сървър. Моля, прочетете нашето ръководство за инсталиране на Docker и Docker Compose на CentOS. Трябва също да притежавате домейн (за да можете да настройвате услуги на поддомейни).

Използвах domain.com като примерно име на домейн в урока . Моля, уверете се, че сте го променили според вашите собствени домейни или поддомейни.

Освен горното, моля, уверете се и в следните неща:

Променете DNS записите на вашия домейн

В панела за запис A/AAAA или CNAME на вашия доставчик на име на домейн се уверете, че както домейнът, така и поддомейните (включително www) сочат към IP адреса на вашия сървър.

Това е пример за справка:

HostnameIP AddressTTLdomain.com172.105.50.178Default*172.105.50.178Defaultsub0.domain.com172.105.50.178Defaultsub1.domain.com172.105.50.178Default

Swap space

За да сте сигурни, че всичките ви контейнерни приложения са спокойни и никога няма да изчерпят паметта си, след като ги разположите, трябва да имате необходимото място за суап на вашата система.

Винаги можете да коригирате swap според наличната RAM на вашата система. Можете да решите пространството за суап въз основа на пакета от контейнери за приложения на един сървър и оценката на тяхното кумулативно използване на RAM.

Стъпка 1: Настройте контейнер за обратен прокси Nginx

Започнете с настройка на вашия обратен прокси сървър nginx. Създайте директория с име 'reverse-proxy' и превключете към нея:

Създайте файл с име docker-compose.yml, отворете го в любимия си терминален текстов редактор като Vim или Nano.

За обратния прокси nginx ще използвам изображение на jwilder/nginx-proxy. Копирайте и поставете следното във файла docker-compose.yml:

Сега нека преминем през важните части на файла за композиране:

Вие сте декларирали четири тома, html, dhparam, vhost и сертификати. Те са постоянни данни, които определено бихте искали да запазите дори след като контейнерът е спрял. HTML & обемите на vhost ще бъдат много важни при следващото внедряване на контейнер Let's Encrypt. Те са проектирани да работят заедно. Докер сокерът е монтиран само за четене вътре в контейнера. Това е необходимо, за да може обратният прокси контейнер да генерира конфигурационните файлове на nginx, да открива други контейнери със специфична променлива на средата. Правилата за рестартиране са зададени винаги. Други опции включват при повреда и без спиране. В този случай винаги е изглеждало по-подходящо. Портовете 80 и 443 са обвързани съответно с хоста за http и https. И накрая, той използва различна мрежа, а не мостовата мрежа по подразбиране. Използването на дефинирана от потребителя мрежа е много важно. Това ще помогне за изолирането на всички контейнери, които трябва да бъдат прокси, заедно с разрешаването на обратния прокси контейнер да препраща клиентите към техните желани/предвидени контейнери и също така позволява на контейнерите да комуникират помежду си (което не е възможно с мостовата мрежа по подразбиране освен ако icc не е зададено на true за демона).

Имайте предвид, че YML е много придирчив към разделите и отстъпа.

Стъпка 2: Настройте контейнер за автоматично генериране на SSL сертификат

За целта можете да използвате jrcs/letsencrypt-nginx-proxy-companion изображение на контейнер.

В същия файл docker-compose.yml, който сте използвали преди, добавете следните редове:

В тази дефиниция на услугата:

Използвате точно същите томове, които сте използвали за контейнера за обратен прокси. Споделянето на html и vhost обеми е необходимо, за да бъде успешно ACME Challenge на letsencrypt. Този контейнер ще генерира сертификатите в /etc/nginx/certs, в контейнера. Ето защо споделяте този том с вашия обратен прокси контейнер. Томът dhparam ще съдържа файла dhparam. Гнездото е монтирано, за да открива други контейнери със специфична променлива на средата. Тук сте дефинирали две променливи на средата. Променливата NGINX_PROXY_CONTAINER сочи към обратния прокси контейнер. Задайте го на името на контейнера. DEFAULT_EMAIL е имейлът, който ще се използва при генериране на сертификати за всеки домейн/поддомейн. Опциятаdependent_on е настроена така, че тази услуга да изчаква обратното прокси да стартира първо, тогава и само тогава това ще започне.Накрая, този контейнер също споделя същата мрежа. Това е необходимо, за да могат двата контейнера да комуникират.

Стъпка 3: Финализиране на файла за съставяне на докер

Инсталиране на Docker Nginx Alpine

След като дефинициите на услугата са готови, завършете докер- съставете файл със следните редове:

Мрежовата мрежа е настроена на външна, тъй като прокси контейнерите също ще трябва да използват тази мрежа. И ако оставим мрежата да бъде създадена от docker-comspose, името на мрежата ще зависи от текущата директория. Това ще създаде мрежа със странно име.

Освен това, други контейнери ще трябва да настроят тази мрежа да бъде външна така или иначе, в противен случай тези композирани файлове също ще трябва да се намират в същата тази директория, нито една от които не е идеална.

Затова създайте мрежата, като използвате

Следва цялото съдържание на файла docker-compose.yml.

Накрая, можете да разположите тези два контейнера (Ngnix и Let's Encrypt), като използвате следната команда:

Стъпка 4: Уверете се, че обратният прокси Ngnix работи

Контейнерът, който ще обслужва интерфейса, ще трябва да дефинира две променливи на средата.

VIRTUAL_HOST: за генериране на конфигурация за обратен прокси

LETSENCRYPT_HOST: за генериране на необходимите сертификати

Уверете се, че имате правилни стойности за тези две променливи. Можете да стартирате nginx-dummy изображение с обратен прокси по следния начин:

Сега, ако отидете до вашия поддомейн, използван в предишната команда, трябва да видите съобщение от Ngnix сървъра.

След като го тествате успешно, можете да спрете работещия докер контейнер:

Можете също да спрете обратния прокси Ngnix, ако няма да го използвате:

Alpine Docker Инсталиране на Nginx

Стъпка 5: Стартирайте други контейнери за услуги с обратен прокси

Процесът на настройване на други контейнери, така че да могат да бъдат проксиирани, е МНОГО прост.

След малко ще го покажа с два екземпляра на внедряване на Nextcloud. Нека първо да ви кажа какво правите тук.

Не се свързвайте с нито един порт

Контейнерът може да пропусне порта, който обслужва интерфейса. Контейнерът за обратен прокси автоматично ще открие това.

Docker Install Nginx Php

(НЕЗАДЪЛЖИТЕЛНО) Дефиниране на VIRTUAL_PORT

Ако обратният прокси контейнер не успее да открие порта, можете да дефинирате друга променлива на средата с име VIRTUAL_PORT с порта, обслужващ фронтенда или която услуга искате получите прокси, като '80' или '7765'.

Задайте Let's Encrypt имейл, специфичен за контейнер

Можете да замените променливата DEFAULT_EMAIL и да зададете конкретен имейл адрес за сертификат(и) за домейн/поддомейн на конкретен контейнер/уеб услуга, като зададете имейл идентификатора на променливата на средата LETSENCRYPT_EMAIL. Това работи на базата на контейнер.

Сега, след като знаете всички тези неща, позволете ми да ви покажа командата, която внедрява екземпляр на Nextcloud, който ще бъде проксиран чрез прокси контейнера на nginx и ще има активиран TLS(SSL/HTTPS).

Това НЕ Е ИДЕАЛНО внедряване. Следващата команда се използва само с демонстративна цел.

В примера сте използвали същата мрежа като обратните прокси контейнери, дефинирали сте двете променливи на средата с подходящите поддомейни (Задайте вашите съответно). След няколко минути трябва да видите Nextcloud да работи на sub0.domain.com. Отворете го в браузър, за да проверите.

Можете да разположите друг екземпляр на Nextcloud точно като този, на различен поддомейн, като следното:

Сега трябва да видите различен екземпляр на Nextcloud, работещ на различен поддомейн на същия сървър.

С този метод можете да разположите различни уеб приложения на един и същ сървър, обслужвани под различни поддомейни, което е доста удобно.

Продължете напред

Сега, след като сте настроили тази настройка, можете да продължите и да я използвате в действителни внедрявания със следните примери:

За повече статии като тези, абонирайте се за нашия бюлетин или обмислете да станете член. За всякакви въпроси, не се колебайте да коментирате по-долу.

Станете член БЕЗПЛАТНО

Станете член, за да получавате редовен бюлетин за Linux (2-4 пъти месечно) и достъп до съдържание само за членове.

Присъединете се към разговора.

Коментарите са затворени.


PREV: Как да обвържете ldap с акаунт на чужд доверен домейн за удостоверяване на приложението

NEXT: Не може да се свърже с грешка на LDAP сървъра в Nagios

Popular Articles

Hot Articles

Navigation Lists

Back to Top