Статьи

Nginx-проксі

  1. Робота панелі без використання Nginx-проксі
  2. Завдання використання Nginx-проксі
  3. Основні принципи роботи
  4. Технічні подробиці
  5. Зміни в роботі модуля
  6. Налаштування
  7. відключення


Дана стаття присвячена опису механізмів роботи модуля проксінг запитів користувача додатків (скорочено Nginx-проксі). Під одними додатками розуміються наприклад phpMyAdmin, phpPGAdmin, Roundcube і т.д.

Робота панелі без використання Nginx-проксі

Без використання Nginx-проксі панель управління перенаправляє запити до призначених для користувача додатків на вузол кластера, обслуговуючий необхідну роль (наприклад, "Поштовий сервер" для Roundcube). При цьому подальша робота користувача з додатком буде проводитися вже за адресою вузла кластера (за замовчуванням використовується основний IP-адреса вузла кластера, наприклад https://12.34.56.78/roundcude ).

Завдання використання Nginx-проксі

При наданні послуг shared-хостингу може знадобитися налаштувати доступ до призначених для користувача додатків через єдину точку входу. В якості адреси точки входу буде використовуватися вказане в налаштуваннях доменне ім'я. Це дозволяє вирішити кілька проблем:

  • Доступ до всіх призначеним для користувача додатків і, якщо необхідно, в панель управління по одному доменному імені
  • Можливість використовувати один SSL-сертифікат (отриманий на доменне ім'я) для роботи користувальницьких додатків, а також доступу в панель управління
  • Користувач отримує постійна адреса (URL) призначеного для користувача додатки, який не змінюватиметься (наприклад, при переміщенні користувача між вузлами кластера)

Основні принципи роботи

Проксінг здійснюється через майстер-панель. У списку вибору ip-адрес nginx-proxy відображаються лише загальні і нестворені засобами панелі ip-адреси.

Для успішного проксінг запитів A-записи домену та псевдонімів на відповідальному (authoritative) за зону DNS-сервері повинні вести на ip-адреса nginx-проксі, який був обраний при підключенні www-домена до nginx-проксі. Кожні 30 хвилин панель перевіряє ip-адреса A-записів nginx-proxy. Якщо А-записи не ведуть на необхідний ip-адреса, панель покаже повідомлення про проблему:

Проблемні псевдоніми Nginx-proxy

Веб-сервер Nginx дозволяє прозоро проксіровать клієнтські запити. За допомогою цього механізму вирішуються описані вище завдання. Логічно схема проксінг виглядає наступним чином:

Надходить запит клієнта в веб-сервер ⇾ визначається користувач і програму, яку потрібно обслуговувати ⇾ запит передається на обробку веб-сервера відповідного вузла кластера ⇾ отриману відповідь повертається клієнтові

На майстер-сервері налаштовується веб-сервер Nginx наступним чином:

  1. Створюється віртуальний сервер (server) для потрібного доменного імені на певному адміністратором IP-адресу на порту 80 для перенаправлення запитів на порт захищеного з'єднання
  2. Створюється віртуальний сервер (server) для потрібного доменного імені на певному адміністратором IP-адресу на порту захищеного з'єднання (443), що надає функціональність проксінг
  3. Створюються іменовані віртуальні директорії (location) для кожного вузла кластера (location @ node1). Вони відповідають за проксінг запиту на вузол кластера
  4. Створюються віртуальні директорії (location) для кожного користувача (location / username)
  5. У location користувача створюються віртуальні директорії (location) для кожного користувача додатки (location / username / appname). Вони визначають, в який іменований location вузла кластера передати запит для обробки
  6. Якщо необхідно проксіровать запити до панелі управління, налаштовується коренева віртуальна директорія location / і проксірующая запити до панелі віртуальна директорія location @ispmgr

Технічні подробиці

  • Для кожного вузла кластера при його створенні або зміні основного IP-адреси реєструється рассинхронизация основного IP-адреси, при синхронізації настроює на вузлі кластера його основний IP-адреса. При цьому на вузлі кластера, якщо він має встановлений Nginx:
  1. В основному файлі конфігурації веб-сервера Nginx створюється віртуальний сервер, за замовчуванням обробляє запити на основному IP-адресу вузла кластера (прослуховує порти 80 і 443)
  2. Знімається ознака пріоритету для всіх WWW-доменів, які були пріоритетними на новому основному IP-адресу вузла кластера. Надалі WWW-домени, створені на основному IP-адресу вузла кластера, не можна використовувати як пріоритетні
  • Налаштування віртуального сервера nginx-проксі знаходяться в файлі masterproxy.conf директорії включаються конфігураційних файлів Nginx (conf.d)
  • Віртуальні директорії для призначених для користувача додатків конфигурируются тільки при визначенні розташування відповідної ролі користувача, не раніше

Приклад конфігураційного файлу віртуального сервера

server {server_name test.net www.test.net; ssl on; listen 192.168.40.51:443 ssl; add_header Strict-Transport-Security "max-age = 31536000;"; client_max_body_size 0; ssl_certificate "/usr/local/mgr5/etc/nginx_certs/masterproxy.crtca"; ssl_certificate_key "/usr/local/mgr5/etc/nginx_certs/masterproxy.key"; ssl_ciphers HIGH:! RC4:! aNULL:! eNULL:! MD5:! EXPORT:! EXP:! LOW:! SEED:! CAMELLIA:! IDEA:! PSK:! SRP:! SSLv2; ssl_prefer_server_ciphers on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; location @ node1 {proxy_redirect / $ 2 / / $ 1 / $ 2 /; proxy_redirect https://192.168.40.51/$2/ / $ 1 / $ 2 /; proxy_cookie_path / $ 2 / / $ 1 / $ 2 /; proxy_pass https://192.168.40.51 ; proxy_request_buffering off; rewrite ^ \ / (. *?) \ / ([^ \ /?] *) (. *) $ / $ 2 $ 3 break; } Location @ node2 {proxy_redirect / $ 2 / / $ 1 / $ 2 /; proxy_redirect https://192.168.40.52/$2/ / $ 1 / $ 2 /; proxy_cookie_path / $ 2 / / $ 1 / $ 2 /; proxy_pass https://192.168.40.52 ; proxy_request_buffering off; rewrite ^ \ / (. *?) \ / ([^ \ /?] *) (. *) $ / $ 2 $ 3 break; } Location / user1 {location / user1 / phpmyadmin {try_files / does_not_exists @ node1; } Location / user1 / roundcube {try_files / does_not_exists @ node2; }} Location @ispmgr {proxy_set_header Host $ host: $ server_port; proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $ scheme; proxy_set_header X-Real-IP $ remote_addr; proxy_set_header X-Forwarded-Secret kBBoQd5H6CAcwb5G; proxy_pass https://192.168.40.51:1500 ; proxy_request_buffering off; proxy_redirect https://192.168.40.51:1500 /; } Location / {try_files / does_not_exists @ispmgr; }} Server {server_name test.net www.test.net; return 301 https: // $ host: 443 $ request_uri ; listen 192.168.40.51:80; }

У наведеному прикладі видно, що так як призначені для користувача ролі сервера баз даних MySQL і поштового сервера розташовані на різних вузлах кластера, запити до відповідних доповнень (phpMyAdmin і Roundcube) передаються на обробку різних іменованих віртуальним тек проксінг.

Зміни в роботі модуля

Оновлення ISPmanager до версії 5.138.0

Оновлення ISPmanager до версії 5.138.0 вносить зміни в роботу модуля nginx-проксі:

  • Налаштування модуля здійснюється в розділі «Домени» -> «WWW-домени», на сторінці зміни конфігурації домену (кнопка «Змінити» для виділеного домену);
  • Nginx-проксі може бути підключений тільки до існуючого веб-домену з SSL-сертифікат;
  • Реалізована можливість підключення до модуля необмеженого кількість веб-доменів;
  • Змінено директорія зберігання налаштувань модуля. Налаштування розташовуються в файлі /etc/nginx/conf.d/masterproxy.d/імя_домена.conf.

Зверніть увагу, що при використанні проксірующего домену, весь трафік буде враховуватися для користувача-власника цього домену.

При оновленні ISPmanager з налаштованим модулем nginx-проксі до версії 5.138.0 або вище, в панелі управління створюється спеціальний користувач proxyuser. Для цього користувача створюється домен, який відповідає параметрам nginx-proxy до поновлення панелі управління.

Налаштування

Включення nginx-проксінг доступно тільки користувачам з правами адміністратора і вище. Для цього необхідно відкрити форму редагування веб-домену і включити опцію «Захищене з'єднання (SSL)», а потім опцію «Nginx-проксі» і вказати «IP-адреса nginx-проксі», з якого буде здійснюватися проксінг.

Якщо web-домен nxinx-proxy створений на локальному вузлі кластаера, то застосовується ip-адреса, яка була обрана в поле "ip-адреса nginx-проксі" Адреса в поле "ip-адреса" будуть ігноруватися.

Підключення Nginx-проксі

Nginx-проксі-сервер використовує сертифікат підключений до веб-домену та оновлює інформацію про нього при необхідності. Для проксінг можуть бути використані Let's Encrypt сертифікати.

Let's Encrypt сертифікат

відключення

Відключення nginx-проксінг доступно тільки користувачам з правами адміністратора і вище. Для відключення nginx-проксі необхідно відкрити форму редагування веб-домену і відключити опцію «Nginx-проксі».

«......»


Ця форма - НЕ звернення на підтримку.
Ми не можемо ідентифікувати вас і відповісти на ваше повідомлення.

Новости

Как создать фото из видео
Кризис заставляет искать дополнительные источники дохода. Одним из таких источников может стать торговля на валютном рынке Форекс. Но чтобы не потерять свои деньги необходимо работать с надежным брокером.

Как оформить группу в вконтакте видео
Дано хотел свой магазин в вк, но не знал с чего начать его делать. Так как хотелось не банальный магазин с кучей ссылок и фото, а красиво оформленный. С меню, с аватаркой. После просмотра видео создал