# Сетевое взаимодействие Для каждого приложения создается *Сервис доступа*, с помощью которого к данному приложению можно подключиться по протоколу из других приложений Амвера и сети интернет. Сервис доступа транслирует указанный в [файле конфигурации](config-file.md) в разделе ``run`` ``containerPort`` порт приложения в ``80`` порт. Таким образом, доступ к приложениям возможен только через 80 порт (исключения составляют окружения БД). Более того, этот сервис обеспечивает балансировку запросов в случае, если запущено несколько реплик одного приложения. ```{eval-rst} .. admonition:: Подсказка :class: hint Чтобы не прописывать явно номер порта, можно использовать переменную окружения `PORT`. По умолчанию ее значение равно `80`. ``` ![python_config](../../img/network_proc.png) ## Доступ из других приложений Для доступа к приложению из других приложений, развернутый в Амвера достаточно обратиться к приложению по внутреннему доменному имени `amvera-<транслитерированное-имя-проекта>-run-<имя-пользователя>`. Важно помнить, что вне зависимости от того, на каком порту работает приложение (этот порт нужно указать в ``containerPort``) *Сервис доступа* слушает 80 порт и Вы не ограничены протоколом HTTP. ```{eval-rst} .. admonition:: Внимание :class: attention Взаимодействие по внутренней сети происходит без шифрования со стороны Amvera! ``` ## Доступ из сети Интернет Для внешнего доступа к приложениям используется обратный прокси nginx. При подключении доменного имени создается *Входной контроллер*, который слушает указанный домен и ``80`` порт и пересылает запросы в сервис доступа, который в свою очередь доставляет их в одну из запущенных реплик приложения. Для активации доступа по протоколу `HTTPS` нужно перейти в раздел "Настройки" и добавить доменное имя. При добавлении доменного имени создается *Входной контроллер*, который слушает указанный домен и ``80`` порт и пересылает запросы в сервис доступа, который в свою очередь доставляет их в одну из запущенных реплик приложения. Так же генерируется бесплатный [Let's Encrypt](https://letsencrypt.org/) `SSL` сертификат, обеспечивающий доступ по протоколу `HTTPS`. ```{eval-rst} .. admonition:: Важно :class: warning Создание *Входного контроллера* и выдача `SSL` сертификата может занимать какое-то время. ``` ### Бесплатное доменное имя Амвера Для каждого приложения есть возможность привязать бесплатное доменное имя третьего уровня, которое обеспечит защищенный доступ к приложению из глобальной сети Интернет. Для этого в разделе "Настройки" в секции "Доменные имена" необходимо перевести тумблер в положение "включено". Приложение получит URL в формате `<транслитерированное-имя-проекта>.<имя-пользователя>.amvera.io`. Так, для проекта "Тест" пользователя "user" обратиться к приложению можно по адресу `https://test.user.amvera.io/`. ![python_config](../../img/default_domain.png) ### Свое доменное имя Для привязки своего доменного имени, купленного у регистратора (например [reg.ru](https://reg.ru)) требуется выполнить следующие действия: 1. Зайти в ЛК регистратора. - Найти «DNS-серверы и управление зоной» или подобное название. А именно там, где прописываются `A` запись, `TXT`, `@` и т.д. в личном кабинете регистратора. - Найти A запись, и прописать туда IP, указанный в разделе «Настройки» «Создать доменное имя» требуемого приложения в Amvera Cloud. - Найти TXT запись, и прописать туда TXT, указанный в разделе «Настройки» «Создать доменное имя» требуемого приложения в Amvera Cloud. 2. Подождать, пока запись распространится по DNS серверам (может занимать до 24 часов). 3. В разделе «Настройки» «Создать доменное имя» указать доменное имя и нажать "Подтвердить и привязать". В случае, если все сделано верно и информация о домене дошла до DNS сервера google (8.8.8.8) домен успешно привяжется. 4. Подождать, пока сконфигурируется *Входной контроллер* и `SSL` сертификат. #### Пример настройки записей в ЛК [reg.ru](https://reg.ru) ![python_config](../../img/reg_ru.png) Нужно нажать «Добавить запись» внизу страницы и ввести значения A и TXT. #### Профилактика ошибок В случае, если при нажатии кнопки "Подтвердить и привязать" вылезает ошибка, следует проверить правильность заполнения записей и их наличие на DNS серверах. Для проверки записей можно воспользоваться [специальным сервисом](https://mxtoolbox.com/txtlookup.aspx). Введя в поле доменное имя и нажав `TXT Lookup` в списке должна появится строчка с записью, требуемой к заполнению в разделе «Настройки» «Создать доменное имя». Сменив `TXT Lookup` на `DNS Lookup` должен вывестись ipv4 адрес сервера Amvera, указанный в разделе «Настройки» «Создать доменное имя».