Простое управление виртуальным хостингом с помощью NGINX Proxy Manager

Управление Прокси и Виртуальными Хостами (VHosts) через конфигурационные файлы NGINX может стать утомительным по мере увеличения количества виртуальных хостов и веб-сервисов. Как можно упростить этот процесс? С помощью NGINX Proxy Manager (NPM).

Читайте далее и узнайте, как создавать, управлять и обеспечивать безопасность виртуальных хостов с помощью веб-консоли NGINX Proxy Manager.

Предварительные условия

В этом учебном пособии будет проведена практическая демонстрация. Если вы хотите следовать за нами, убедитесь, что у вас есть следующее:

Настройка NGINX Proxy Manager

NGINX Proxy Manager – это не пакет, который вы устанавливаете в свою операционную систему. Вместо этого NPM – это приложение, которое вы развертываете в Docker, поэтому Docker и Docker Compose – основные требования.

Следуйте нижеуказанным шагам, чтобы начать настройку вашего NGINX Proxy Manager.

1. Войдите на свой сервер Linux через SSH или рабочее окружение рабочего стола, если оно присутствует.

2. Создайте и откройте файл YAML с именем docker-compose.yml, используя предпочтительный текстовый редактор. Здесь используется vi.

vi docker-compose.yml

3. Скопируйте и вставьте следующий код в редактор. Этот код содержит директивы для загрузки и настройки последнего образа nginx-proxy-manager. Сохраните и закройте файл, чтобы вернуться к командной строке.

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped # Гарантировать, что менеджер прокси выживет при сбоях
    ports:
      # Разрешить доступ к соответствующим портам контейнера с хост-машиной
      - '80:80'
      - '81:81' # Порт для Панели администратора
      - '443:443'
    volumes:
      # Сопоставить следующие каталоги контейнера с соответствующими каталогами на хосте
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

4. Запустите docker-compose, чтобы запустить контейнер в фоновом режиме (-d) в соответствии с указанными директивами.

docker-compose up -d
Running Docker Compose to set up NGINX Proxy Manager container

5. Выполните следующую команду, чтобы убедиться, что контейнер работает.

docker ps

Вы должны увидеть работающий процесс, соответствующий контейнеру менеджера прокси, как на скриншоте ниже, если всё в порядке.

Listing running Docker containers

Доступ к административной панели

NGINX Proxy Manager теперь должен работать. Теперь вы можете получить доступ к административной панели NPM для выполнения начальной настройки администратора.

1. Откройте окно браузера и перейдите по адресу http://<host_ip>:admin-ui-port>. Для удобства, в этом руководстве используется неявный localhost вместо IP-адреса, то есть http://localhost:81, чтобы запустить панель администратора.

2. Войдите, используя начальные учетные данные: адрес электронной почты [email protected] и пароль changeme.

Logging in for the first time

3. Измените учетную запись пользователя по умолчанию по вашему усмотрению. Это руководство сохраняет Имя и Псевдоним, изменяя только адрес электронной почты на [email protected]. Нажмите “Сохранить”, чтобы сохранить данные пользователя.

Changing admin user default credentials

4. Введите новый пароль для пользователя в разделе “Изменить пароль”, как показано ниже. Введите пароль длиной восемь символов или более и нажмите “Сохранить”.

Changing the default password

Вы должны увидеть внесенные вами изменения в учетной записи пользователя ниже.

Viewing the user list in NGINX Proxy Manager

Развертывание веб-сервера

Теперь, когда вы выполнили начальную настройку, следующим шагом будет запуск веб-сервера для вашего виртуального хоста. Следуйте инструкциям в этом разделе, чтобы быстро запустить веб-сервис Apache с использованием Docker Compose.

Откройте файл docker-compose.yml, который вы создали ранее в текстовом редакторе. Добавьте следующий фрагмент кода в файл docker-compose.yml

Преимущество использования того же файла заключается в том, что вы изменяете существующую сеть контейнера, добавляя контейнер, основанный на httpd, зарегистрированный под именем app2, вместо создания отдельной сети.

app2:
    #Пользовательское имя для внутреннего обозначения контейнера. Используется для сетевого взаимодействия между контейнерами
    image: 'httpd:latest'
    restart: unless-stopped

Содержимое файла должно выглядеть как на скриншоте ниже. Сохраните файл и выйдите из редактора.

Adding a web server deployment directive

Запустите docker-compose, чтобы запустить контейнер в фоновом режиме (-d).

docker-compose up -d

Вы должны получить обратную связь, аналогичную скриншоту ниже, подтверждающую создание второго контейнера.

Creating and starting the Web server with Docker Compose

Создание нового виртуального хоста

Теперь у вас работает веб-сервис. Этот раздел направлен на обеспечение доступа к веб-серверу через опубликованные порты NGINX Proxy Manager.

1. Войдите в панель администратора NGINX Proxy Manager.

2. Нажмите Hosts —> Proxy Hosts.

Creating a VHOST: Opening the Proxy Host card

3. Нажмите Добавить Proxy Host, чтобы начать создание виртуального хоста для веб-сервера.

Creating a VHOST: Adding a Proxy Host

4. Заполните форму Новый Proxy Host следующими данными для настройки виртуального хоста.

  • Имена доменов: Имена доменов, по которым будет доступен ваш веб-сервер. В этом примере используется домен testweb.com.
  • Прошлый Хостнейм / IP: Имя хоста или IP-адрес веб-сервера. Поскольку в этом руководстве использовался Docker Compose для настройки контейнеров, достаточно использовать app2. Введите любое имя, которое вы указали в файле docker-compose.yml.
  • Проксировать Порт: Порт, на котором веб-сервер ожидает запросы. В данном случае используйте порт 80, который является стандартным выставленным портом для контейнеров Apache httpd.
  • Блокировать Общие Эксплойты: Кроме того, прокси, настроенные с использованием NPM, могут блокировать общие эксплойты. Включите эту опцию.
  • Список Доступа: Предварительно заданные списки для управления доступом к веб-серверу через прокси. Для этого учебного пособия оставьте выбор открытым для публичного доступа, чтобы удостовериться, что вы можете получить доступ к веб-серверу через прокси.

Форма на вашем экране должна соответствовать скриншоту ниже. Нажмите “Сохранить” после заполнения формы.

Adding the Proxy Host details

Теперь у вас есть один прокси-хост в списке.

List of proxy hosts

5. В конце концов, перейдите по виртуальному хосту URL в новой вкладке или окне браузера. Для этого учебного пособия URL – http://testweb.com. Если виртуальный хост работает правильно, вы должны увидеть домашнюю страницу по умолчанию.

Accessing the Webserver via the Proxy

Предоставление SSL-сертификатов

Вы развернули веб-сервер и подтвердили, что он работает. На этом этапе, однако, у веб-сайта еще нет SSL-сертификата. В то время как для внутренних частных веб-сайтов отсутствие SSL-сертификата может быть приемлемо, то для размещения публичных веб-сайтов это не должно происходить.

Чтобы обеспечить шифрование соединений на вашем веб-сайте, вы установите SSL-сертификат на свой виртуальный хост. Не волнуйтесь, вы сделаете это с помощью NGINX Proxy Manager. Но у вас уже должен быть существующий SSL-сертификат в формате PEM и ключ сертификата, как требование.

1. Нажмите вкладку SSL-сертификатов в админ-панели NGINX Proxy Manager.

Opening the SSL Certificates tab

2. В правом верхнем углу нажмите “Добавить SSL-сертификат” —> “Пользовательский”.

Adding a custom SSL certificate

Как альтернативу пользовательскому сертификату, вы можете запросить сертификат Let’s Encrypt напрямую и на лету, выбрав Let’s Encrypt. Но для этого ваш веб-сайт и DNS-запись должны быть общедоступными. В противном случае получение сертификата завершится неудачей.

3. Заполните форму Добавить пользовательский сертификат следующим образом

  • Имя: Человеко-читаемое имя для сертификата в админ-панели. В этом учебнике используется имя Testweb Cert.
Provisioning SSL Certificates: Naming the certificate
  • Ключ сертификата: Этот ключ идет в комплекте с файлом сертификата, который вы сгенерировали как требование в этом учебнике.

Нажмите “Обзор” и перейдите к файлу ключа.

Provisioning SSL Certificates: Selecting the key file

Дважды щелкните по файлу ключа. В этом учебнике ключ сертификата называется mytesthttpd.key.

Provisioning SSL Certificates: Selecting the key file
  • Сертификат: Сам файл сертификата, в формате .crt или .pem.

Нажмите “Обзор” и перейдите к файлу сертификата в проводнике.

Provisioning SSL Certificates: Selecting the certificate file

Дважды щелкните по файлу сертификата, который в этом учебнике называется mytesthttpd.pem.

Provisioning SSL Certificates: Selecting the certificate file

4. После заполнения всех трех полей ваша форма должна выглядеть так, как на скриншоте ниже. Нажмите “Сохранить”, чтобы отправить настраиваемый сертификат.

В этом уроке не используется промежуточный сертификат. Пока игнорируйте это поле.

Saving the SSL certificate

5. Теперь перейдите в раздел “Хосты” —> “Хосты прокси”.

Provisioning SSL Certificates: Applying the certificate to a Proxy Host

6. Нажмите на иконку меню с шаурмой kebab и выберите “Редактировать”. Обратите внимание, что в колонке SSL на данном этапе указано только “HTTP”.

Editing a proxy Host

7. Перейдите на вкладку “SSL” в окне редактирования хоста прокси, как показано ниже. Выберите сертификат из выпадающего меню под заголовком “SSL-сертификат”. В данном учебнике это сертификат Testweb, как показано на скриншоте ниже.

Selecting a certificate for a Proxy Host

8. Выберите ранее добавленный сертификат из выпадающего меню под заголовком “SSL-сертификат”. Как видно на скриншоте ниже, выбираемым именем сертификата является Testweb Cert.

Selecting a certificate for a Proxy Host

9. Активируйте все доступные улучшенные опции SSL, как показано на скриншоте ниже, и нажмите “Сохранить”.

Опция “Force SSL” принудительно переведет все подключения на HTTPS, даже если клиент изначально пытался получить доступ только к URL по протоколу HTTP.

Enabling enhanced SSL features

A word of warning with HSTS. As browsers will include the site on an internal inclusion list, your site will no longer work under non-SSL conditions. Therefore, make sure that you have everything set up the correct way first.

Вы заметите, что значение колонки SSL изменилось с “Только HTTP” на “Пользовательский”.

Confirming changes in the SSL setting for a Proxy Host

10. Наконец, откройте вкладку браузера и снова перейдите по виртуальному домену хоста. В данном уроке это http://testweb.com. Соединение должно автоматически обновиться до HTTPS.

Testing HTTPS access with a browser

Поздравляю! Вы завершили настройку безопасного виртуального хоста с использованием NGINX Proxy Manager.

Добавление пользователей в NGINX Proxy Manager

Если вы работаете в команде или ожидаете, что кто-то другой будет управлять виртуальными хостами в NPM, вам нужно предоставить пользовательский доступ. В этом разделе вы расширите управление NPM, особенно в командных настройках, создав пользователя и назначив ему роли и разрешения.

1. Нажмите Users на главной странице панели администратора.

Extending NPM with Users: Opening the Users tab

2. Нажмите Add User в правом верхнем углу карточки Users.

Adding a user

3. Введите полное имя пользователя (Test User), псевдоним (testuser) и адрес электронной почты ([email protected]) в соответствующие поля и нажмите Сохранить.

Создаваемый вами пользователь не будет полным администратором, поэтому не активируйте роль Администратора. Вместо этого вы будете назначать пользовательские разрешения. Нажмите Сохранить, чтобы добавить нового пользователя.

Adding user particulars

4. Установите разрешения, которые вы хотите предоставить пользователю. В этом руководстве новый пользователь будет иметь следующие настройки разрешений.

  • Может просматривать только элементы, созданные пользователем.
  • Может создавать, редактировать и удалять Proxy Hosts.
  • Может создавать, редактировать и удалять Redirection Hosts.
  • Не видит 404 Hosts.
  • Не видит Streams.
  • Может просматривать Access Lists.
  • Может создавать, редактировать и удалять SSL Certificates.

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

Saving the user’s permissions

5. Теперь нажмите меню нового пользователя и выберите Войти как пользователь. Этот шаг переключит текущий контекст пользователя на Test User.

Signing in as the new user

6. Исследуйте панель администратора с точки зрения нового пользователя. В соответствии с разрешениями этого пользователя, вы должны увидеть меньше вкладок и ресурсов.

Confirming access permissions

Заключение

Поздравляем с завершением этого руководства по NGINX Proxy Manager. Вы научились управлять виртуальными хостами и обеспечивать сотрудничество, создавая пользователей через графический интерфейс! Думаете ли вы когда-нибудь вернуться к управлению виртуальными хостами NGINX через редактирование файлов конфигурации вручную?

Вот идея, чтобы проверить свои знания еще глубже. Почему бы не прочитать Как обслуживать поддомены NGINX или несколько доменов. Но вместо следования ручным конфигурациям, примените то, что вы узнали, и разверните и настройте виртуальные хосты с помощью NGINX Proxy Manager.

Source:
https://adamtheautomator.com/nginx-proxy-manager/