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

Искате множество Docker контейнери на един и същи порт? Ето как

Rsdaa 31/12/2021 1635

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

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

Тук, в Bobcares.com, ние помагаме на уеб разработчиците и специалистите по дигитален маркетинг да настроят и поддържат сървъри за уеб хостинг, базирани на Docker.

И често срещано предизвикателство, което разрешаваме, е: „Как да използваме един сървър за стартиране на няколкостотин сайта, работещи на Docker контейнери.“

Защо множество контейнери не могат да се свържат към един и същ HTTP порт?

Уебсайтовете слушат порт 80, за да получават заявки и да обслужват страници.

Така че всеки Docker контейнер на уебсайт има отворен порт 80.

Хостът Docker обаче има само един порт 80 и може да получава заявки само за един от тези контейнери.

Docker може да бъде конфигуриран да свързва всеки контейнер към отделни сървърни портове. За напр. свържете порт 80 на Docker 1 към сървърен порт 8080, Docker 2 към 8081 и т.н.

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

Използване на обратен прокси за изпълнение на множество контейнери на един сървър

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

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

Има много обратни проксита като HAProxy, Nginx и Varnish.

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

Как да настроите HTTP шлюз с помощта на Nginx контейнер

Има 3 части за настройка на Nginx шлюз:

Стартирайте Nginx контейнер Направете конфигурационните файлове на Nginx редактируеми чрез том Конфигурирайте Nginx за свързване към вътрешния IP адрес на уебсайта

1. Свържете порт 80 и 443 на хоста Docker към контейнера Nignx

За да действа Nginx като шлюз, той трябва да има контрол над HTTP и HTTPS портовете на хост сървъра на Docker.

За да го зададете, настройте файл за съставяне на докер с директивата „ports“ по следния начин:

http-gateway:име на контейнер: http-rev-proximage: jwilder/nginx-proxyports:- '80:80'- '443:443'

В зависимост от нуждите на вашия уебсайт и моделите на трафик може да имате нужда от допълнителни настройки като „CLIENT_MAX_BODY_SIZE“ и „PROXY_READ_TIMEOUT“, зададени в директивата „околна среда“.

2. Направете конфигурационния файл на Nginx редактируем извън контейнера

Някои от нашите клиенти имат Docker сървъри, които съдържат стотици сайтове.

В тези сървъри ние добавяме, променяме и премахваме уебсайтове доста редовно.

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

Използваме Docker Volumes за това, където конфигурационната папка на Nginx „/etc/nginx/conf.d/“ е монтирана във външна директория като „/usr/docker/nginx/conf.d“.

Настройките на Docker Composer изглеждат така:

томове:- /usr/docker/nginx/conf.d:/etc/nginx/conf.d/:rw

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

Щракнете тук за помощ от експерт Docker.

3. Конфигурирайте Nginx за свързване на заявки към сайт към частния IP на контейнера на сайта

Сега, когато имаме конфигурационни файлове на Nginx в място, което може да се редактира, създайте конфигурационни файлове за всеки сайт с директива „proxy_pass“, за да свържете частния IP на сайта към Nginx.

Напр. конфигурационният файл на домейн (да речем mydomain.com) може да изглежда по следния начин:

местоположение / {proxy_pass http://10.1.2.3:80;proxy_set_header Хост $хост;}

В този момент Nginx слуша порт 80 и препраща всички заявки, идващи към mydomain.com, към своя вътрешен IP 10.1.2.3.

Първи стъпки с мултидомейн хостинг в Docker сървъри

Стъпките, които споменахме тук, са само схема, която засяга основните фактори, за да работи това.

Дребните детайли са пропуснати, за да остане обектът фокусиран.

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

Може да варира от настройка на ограничения на ресурсите & SSL за грешки като изтичане на конфигурация & объркване на протоколи.

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

Нашите Docker експерти са онлайн 24/7 и могат да ви се притекат на помощ в рамките на минути. Щракнете тук, за да отворите заявка за поддръжка.

Заключение

Docker позволява само обвързване на порт 1 към 1, което не позволява на множество Docker контейнери да използват един и същ порт на главния сървър (Docker хост). Тук обсъдихме как да използваме обратен прокси за отклоняване на заявки към много домейни през един HTTP порт в хоста на Docker.

ПРЕДОТВРАТЯВАЙТЕ СЪРВЪРА ВИ ОТ СРИВ!

Никога повече не губете клиенти заради ниската скорост на сървъра! Нека ви помогнем.

Нашите сървърни експерти ще наблюдават & поддържайте вашия сървър 24/7, така че да остане светкавично бърз и сигурен.

ВИЖТЕ АДМИНИСТРАТИВНИТЕ ПЛАНОВЕ НА СЪРВЪРА

var google_conversion_label = "owonCMyG5nEQ0aD71QM";


PREV: 14 предимства и недостатъци на виртуализацията – Vittana.org

NEXT: Виртуализация на сървъра - javatpoint

Popular Articles

Hot Articles

Navigation Lists

Back to Top