bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward

Як налаштувати reverse proxy на VPS: Легко та швидко!

calendar_month October 03, 2025 schedule 11 хв. читання visibility 644 переглядів
person
Valebyte Team
Як налаштувати reverse proxy на VPS: Легко та швидко!
summarize

TL;DR

  • Reverse proxy скрывает IP бэкенд-серверов, повышая безопасность и защиту от DDoS-атак.
  • Nginx является стандартом для настройки проксирования, балансировки нагрузки и кэширования.
  • Кэширование статики на уровне прокси-сервера значительно ускоряет загрузку страниц для пользователей.
  • Терминация SSL/TLS на стороне Nginx освобождает ресурсы бэкенда для обработки бизнес-логики.

Як налаштувати reverse proxy на VPS?

У цій детальній статті ми, як досвідчені системні адміністратори, поділимося знаннями про налаштування reverse proxy на вашому віртуальному приватному сервері (VPS хостинг). Reverse proxy – це потужний інструмент, який дозволяє покращити безпеку, продуктивність та керованість ваших веб-застосунків. Ми розглянемо процес встановлення та налаштування reverse proxy з використанням Nginx, одного з найпопулярніших і надійних веб-серверів, який часто використовується як reverse proxy. Ви дізнаєтеся, як маршрутизувати трафік, налаштовувати SSL/TLS, кешувати контент і багато іншого. Ця стаття буде корисна як початківцям, так і досвідченим користувачам, які прагнуть оптимізувати роботу своїх веб-серверів. Розпочнемо!

Зміст:

Що таке reverse proxy і навіщо він потрібен?

Опис reverse proxy

Reverse proxy – це сервер, який виступає як посередник між клієнтами та одним або кількома back-end серверами. Клієнт відправляє запит reverse proxy, який потім перенаправляє цей запит на відповідний back-end сервер. Відповідь back-end сервера повертається reverse proxy, який потім відправляє її клієнту. З точки зору клієнта, він взаємодіє лише з reverse proxy, не знаючи про існування back-end серверів. Це забезпечує декілька важливих переваг.

  • Безпека: Reverse proxy приховує структуру вашої внутрішньої мережі, не розкриваючи IP-адреси back-end серверів. Це ускладнює зловмисникам отримання інформації про вашу інфраструктуру. Він також може виступати як фільтр, блокуючи шкідливі запити та захищаючи back-end сервери від DDoS-атак.
  • Балансування навантаження: Reverse proxy може розподіляти вхідний трафік між декількома back-end серверами, запобігаючи перевантаженню одного сервера та забезпечуючи високу доступність вашого застосунку.
  • Кешування: Reverse proxy може кешувати статичний контент, такий як зображення, CSS і JavaScript файли, що зменшує навантаження на back-end сервери та прискорює завантаження сторінок для користувачів.
  • SSL/TLS шифрування: Reverse proxy може обробляти SSL/TLS шифрування, звільняючи back-end сервери від цієї ресурсомісткої задачі. Це також дозволяє централізовано керувати SSL/TLS сертифікатами.
  • Спрощення управління: Reverse proxy спрощує управління веб-застосунками, дозволяючи змінювати конфігурацію back-end серверів без необхідності вносити зміни на стороні клієнта.

Уявіть, що у вас є інтернет-магазин. У вас є декілька серверів, які обробляють запити користувачів, обробляють платежі та керують базою даних. Без reverse proxy, кожен користувач напряму підключається до одного з цих серверів. Якщо один сервер перевантажений, це може призвести до сповільнення роботи сайту або навіть до його недоступності. З reverse proxy, всі користувачі підключаються до reverse proxy сервера, який потім розподіляє запити між доступними серверами. Якщо один сервер виходить з ладу, reverse proxy автоматично перенаправляє запити на інші сервери, забезпечуючи безперервну роботу сайту.

Приклад команди для перевірки доступності сервера:

ping 192.168.1.10

Ця команда відправить ICMP ехо-запити на сервер з IP-адресою 192.168.1.10. Якщо сервер доступний, ви побачите відповіді від нього. Якщо сервер недоступний, ви побачите повідомлення про помилку.

Приклад команди для перевірки мережевих з'єднань:

netstat -tulnp

Ця команда відобразить список всіх активних мережевих з'єднань на вашому сервері, включаючи протокол, локальну адресу, віддалену адресу, стан і PID процесу, який використовує з'єднання. Це корисно для визначення того, які порти відкриті і які процеси їх використовують.

Приклад команди для перевірки маршрутів:

route -n

Ця команда відобразить таблицю маршрутизації ядра. Це корисно для визначення того, як трафік направляється з вашого сервера на інші мережі.

Reverse proxy – це ключовий елемент сучасної веб-інфраструктури, що дозволяє підвищити безпеку та продуктивність веб-застосунків.

John Doe, Senior System Administrator

Приклад: Припустимо, у вас є два веб-сервери: webserver1.example.com (192.168.1.10) та webserver2.example.com (192.168.1.11). Ваш reverse proxy матиме зовнішню IP-адресу 203.0.113.10. Коли користувач намагається отримати доступ до www.example.com, запит спочатку надходить на reverse proxy (203.0.113.10), який потім перенаправляє його на один з веб-серверів (наприклад, webserver1.example.com). Користувач отримує відповідь від webserver1.example.com, але з його точки зору він спілкується безпосередньо з www.example.com.

Вибір інструменту: Nginx

Логотип Nginx

Nginx - це високопродуктивний веб-сервер і reverse proxy, відомий своєю ефективністю, стабільністю і гнучкістю. Він може обробляти тисячі одночасних з'єднань і споживає відносно мало ресурсів. Nginx є чудовим вибором для використання в якості reverse proxy з кількох причин:

  • Висока продуктивність: Nginx розроблений для обробки великої кількості одночасних з'єднань з мінімальними затримками.
  • Гнучкість: Nginx пропонує широкий спектр налаштувань і модулів, що дозволяють адаптувати його до різних завдань.
  • Простота конфігурації: Nginx має зрозумілий і логічний синтаксис конфігурації.
  • Підтримка SSL/TLS: Nginx надає відмінну підтримку SSL/TLS шифрування, дозволяючи забезпечити безпечне з'єднання між клієнтом і сервером.
  • Кешування: Nginx може кешувати статичний і динамічний контент, що значно покращує продуктивність веб-застосунків.

Існують й інші альтернативи, такі як Apache, але Nginx часто перевершує Apache за продуктивністю, особливо в сценаріях з великою кількістю одночасних з'єднань. Крім того, конфігурація Nginx часто вважається простішою і зрозумілішою, ніж конфігурація Apache.

ФункціяNginxApache
Продуктивність (конкурентні з'єднання)ВисокаСередня
Використання ресурсівНизькеВисоке
КонфігураціяВідносно простаБільш складна
Підтримка SSL/TLSВідміннаХороша
КешуванняВідміннеХороше (з модулями)

У цьому посібнику ми будемо використовувати Nginx як reverse proxy. Перед початком переконайтеся, що у вас є VPS зі встановленою операційною системою Linux (наприклад, Ubuntu або Debian) і доступ до командного рядка.

Приклад команди для перевірки версії Nginx:

nginx -v

Ця команда виведе версію встановленого Nginx.

Приклад команди для перевірки синтаксису конфігураційного файлу Nginx:

nginx -t

Ця команда перевірить синтаксис вашого конфігураційного файлу Nginx і повідомить про помилки, якщо вони є. Завжди запускайте цю команду після внесення змін до конфігураційного файлу.

Приклад команди для перезапуску Nginx:

systemctl restart nginx

Ця команда перезапустить Nginx. Це необхідно зробити після внесення змін до конфігураційного файлу, щоб застосувати ці зміни.

Nginx – це не просто веб-сервер, це потужний інструмент для побудови високопродуктивної та надійної веб-інфраструктури.

Jane Smith, DevOps Engineer

Приклад: Ви плануєте розгорнути новий веб-застосунок. Ви можете використовувати Nginx як reverse proxy для розподілу трафіку між декількома екземплярами вашого застосунку, забезпечуючи високу доступність і масштабованість. У випадку збільшення трафіку, ви можете просто додати нові екземпляри застосунку, і Nginx автоматично почне розподіляти трафік і на них.

Потрібен надійний VPS для вашого зворотного проксі?

Розгорніть свій зворотний проксі без проблем. Наші VPS-плани пропонують ідеальну продуктивність і стабільність. — from €4.49/mo.

Вибрати VPS-план →
rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

Встановлення та налаштування Nginx

Установка Nginx

Процес встановлення Nginx залежить від вашої операційної системи. Нижче наведено інструкції для Ubuntu/Debian і CentOS/RHEL.

Встановлення Nginx на Ubuntu/Debian:

Спочатку оновіть список пакетів:

sudo apt update

Потім встановіть Nginx:

sudo apt install nginx

Після встановлення запустіть Nginx і налаштуйте його автозапуск під час завантаження системи:

sudo systemctl start nginx
sudo systemctl enable nginx

Встановлення Nginx на CentOS/RHEL:

Спочатку встановіть репозиторій EPEL (якщо він ще не встановлений):

sudo yum install epel-release

Потім встановіть Nginx:

sudo yum install nginx

Після встановлення запустіть Nginx і налаштуйте його автозапуск під час завантаження системи:

sudo systemctl start nginx
sudo systemctl enable nginx

Після встановлення перевірте статус Nginx, щоб переконатися, що він працює:

sudo systemctl status nginx

Очікуваний вивід:

● nginx.service - The Nginx HTTP and reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2023-10-27 10:00:00 UTC; 10s ago
     Docs: man:nginx(8)
 Main PID: 1234 (nginx)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/nginx.service
           └─1234 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;

Oct 27 10:00:00 your-vps systemd[1]: Started The Nginx HTTP and reverse proxy server.

Якщо Nginx працює, ви повинні побачити "active (running)" у виводі команди.

Конфігураційний файл Nginx зазвичай знаходиться в /etc/nginx/nginx.conf. Сайти (virtual hosts) зазвичай зберігаються в каталозі /etc/nginx/sites-available/, а символічні посилання на активні сайти створюються в каталозі /etc/nginx/sites-enabled/.

Попередження: Перед внесенням змін до конфігураційного файлу Nginx, зробіть його резервну копію. Це дозволить вам легко відновити конфігурацію в разі виникнення проблем.

Приклад: Ви встановили Nginx на свій VPS. Тепер вам потрібно налаштувати його для обслуговування статичного сайту. Ви можете створити новий файл конфігурації в /etc/nginx/sites-available/mysite і додати в нього конфігурацію для вашого сайту. Потім ви можете створити символічне посилання на цей файл в /etc/nginx/sites-enabled/ і перезапустити Nginx, щоб застосувати зміни.

Конфігурація reverse proxy

Настройка reverse proxy

Щоб налаштувати Nginx як reverse proxy, вам потрібно створити або змінити конфігураційний файл сайту. Наприклад, ви можете створити новий файл конфігурації /etc/nginx/sites-available/example.com і додати в нього наступну конфігурацію:

server {
    listen 80;
    server_name example.com www.example.com;

    location / {
        proxy_pass http://192.168.1.100:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

В цьому прикладі:

  • listen 80; вказує, що Nginx буде прослуховувати порт 80 (HTTP).
  • server_name example.com www.example.com; вказує доменні імена, для яких буде оброблятися цей сайт.
  • proxy_pass http://192.168.1.100:8080; вказує адресу back-end сервера, на який будуть перенаправлятися запити. В даному випадку це сервер з IP-адресою 192.168.1.100, що прослуховує порт 8080.
  • proxy_set_header директиви передають інформацію про запит клієнта back-end серверу. Це необхідно для того, щоб back-end сервер міг правильно обробляти запити.

Після створення файлу конфігурації, створіть символічне посилання на нього в каталозі /etc/nginx/sites-enabled/:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com

Видаліть стандартний файл конфігурації default, якщо він існує:

sudo rm /etc/nginx/sites-enabled/default

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

sudo nginx -t

Перезапустіть Nginx, щоб застосувати зміни:

sudo systemctl restart nginx

Тепер, коли користувач заходить на example.com, запит буде перенаправлено на back-end сервер 192.168.1.100:8080.

Балансування навантаження між декількома back-end серверами:

Для балансування навантаження між кількома back-end серверами, вам потрібно визначити групу серверів у конфігураційному файлі Nginx:

upstream backend {
    server 192.168.1.100:8080;
    server 192.168.1.101:8080;
}

server {
    listen 80;
    server_name example.com www.example.com;

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

У цьому прикладі Nginx розподілятиме трафік між серверами 192.168.1.100:8080 та 192.168.1.101:8080. Nginx використовує алгоритм round-robin за замовчуванням для розподілу трафіку. Ви можете використовувати інші алгоритми, такі як least_conn (найменша кількість з'єднань) або ip_hash (на основі IP-адреси клієнта).

Порада: Використовуйте інструменти для моніторингу навантаження на back-end сервери. Це дозволить вам визначити, які сервери перевантажені, і за потреби додати нові сервери до групи.

Офіційна документація Nginx про reverse proxy.

Приклад: Ви розробляєте мікросервісну архітектуру. Ви можете використовувати Nginx як reverse proxy для маршрутизації запитів до різних мікросервісів в залежності від URL-адреси. Наприклад, запити до /api/users можуть бути перенаправлені на мікросервіс управління користувачами, а запити до /api/products – на мікросервіс управління продуктами.

Безпека: SSL/TLS

Налаштування SSL/TLS

SSL/TLS шифрування необхідне для забезпечення безпеки з'єднання між клієнтом та reverse proxy. Це захищає дані від перехоплення та несанкціонованого доступу. Найпростіший спосіб отримати SSL/TLS сертифікат – використовувати Let's Encrypt, безкоштовний та автоматизований центр сертифікації.

Встановлення Certbot (Let's Encrypt):

На Ubuntu/Debian:

sudo apt install certbot python3-certbot-nginx

На CentOS/RHEL:

sudo yum install certbot python3-certbot-nginx

Отримання SSL/TLS сертифіката за допомогою Certbot:

sudo certbot --nginx -d example.com -d www.example.com

Ця команда автоматично отримає та встановить SSL/TLS сертифікат для example.com та www.example.com. Certbot також автоматично налаштує Nginx для використання сертифіката.

Після успішного отримання сертифіката, Certbot запропонує вам перенаправити HTTP трафік на HTTPS. Рекомендується вибрати цей варіант для забезпечення безпеки.

Ваш конфігураційний файл Nginx буде автоматично оновлений, щоб включити SSL/TLS. Приклад конфігурації:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    include /etc/nginx/snippets/ssl-params.conf;

    location / {
        proxy_pass http://192.168.1.100:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

У цьому прикладі:

  • Перший блок server перенаправляє HTTP трафік (порт 80) на HTTPS (порт 443).
  • Другий блок server прослуховує порт 443 (HTTPS) та використовує SSL/TLS сертифікат, розташований в /etc/letsencrypt/live/example.com/fullchain.pem та /etc/letsencrypt/live/example.com/privkey.pem.
  • include /etc/nginx/snippets/ssl-params.conf; включає параметри SSL/TLS, рекомендовані Certbot.

Certbot автоматично налаштовує автоматичне оновлення SSL/TLS сертифікатів. Ви можете перевірити статус оновлення за допомогою команди:

sudo certbot renew --dry-run

Ця команда перевірить, чи потрібно оновлювати сертифікати, та покаже результат. Якщо все гаразд, ви побачите повідомлення "Congratulations, all renewals succeeded".

Попередження: Не забувайте регулярно оновлювати SSL/TLS сертифікати. Сертифікати Let's Encrypt дійсні лише 90 днів. Автоматичне оновлення – це найпростіший спосіб забезпечити, що ваші сертифікати завжди будуть дійсними.

Офіційний сайт Certbot.

Приклад: Ви хочете забезпечити безпечне з'єднання для свого інтернет-магазину. Ви використовуєте Certbot для отримання SSL/TLS сертифіката для вашого домену. Після встановлення сертифіката, весь трафік між користувачами та вашим магазином буде зашифрований, що захистить особисті дані користувачів, такі як паролі та дані кредитних карт.

rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

Моніторинг та усунення несправностей

Моніторинг та налагодження

Моніторинг та усунення несправностей важливі для забезпечення стабільної роботи вашого reverse proxy. Нижче наведено деякі корисні команди та інструменти.

Перевірка статусу Nginx:

sudo systemctl status nginx

Ця команда показує поточний статус Nginx, включаючи інформацію про те, чи запущений він, коли він був запущений та які процеси він використовує.

Перегляд логів Nginx:

Логи Nginx зберігаються в каталозі /var/log/nginx/. Найбільш важливі логи – це access.log (журнал доступу) та error.log (журнал помилок).

sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log

Ці команди показують останні записи в логах доступу та помилок в режимі реального часу. Це корисно для відстеження проблем та помилок.

Використання journalctl:

journalctl – це інструмент для перегляду системних логів. Ви можете використовувати його для перегляду логів Nginx:

sudo journalctl -u nginx.service

Ця команда покаже всі логи, пов'язані з сервісом Nginx.

Перевірка доступності back-end серверів:

Ви можете використовувати ping або curl для перевірки доступності back-end серверів:

ping 192.168.1.100
curl http://192.168.1.100:8080

ping перевіряє, чи доступний сервер за IP-адресою. curl надсилає HTTP запит на сервер та перевіряє, чи повертає він відповідь.

Перевірка конфігурації Nginx:

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

sudo nginx -t

Якщо конфігурація містить помилки, Nginx повідомить про це.

Порада: Використовуйте інструменти для моніторингу продуктивності вашого reverse proxy, такі як Grafana або Prometheus. Це дозволить вам відстежувати завантаження процесора, використання пам'яті та трафік, та виявляти проблеми до того, як вони вплинуть на продуктивність.

Приклад: Ви помітили, що ваш веб-сайт працює повільно. Ви перевіряєте логи Nginx і бачите багато помилок 502 (Bad Gateway). Це вказує на те, що back-end сервери не відповідають на запити. Ви перевіряєте доступність back-end серверів за допомогою ping і curl і виявляєте, що один із серверів недоступний. Ви перезапускаєте цей сервер, і проблема вирішується.

На закінчення, налаштування reverse proxy на VPS з використанням Nginx – це потужний спосіб підвищити безпеку, продуктивність і керованість ваших веб-додатків. Дотримуючись цього посібника, ви зможете успішно налаштувати reverse proxy і забезпечити стабільну та надійну роботу вашого веб-сервера.

```

Масштабуйте свої проєкти з хмарними інстансами

Ваш зворотний проксі готовий. Тепер підніміть свої проєкти на новий рівень з гнучкими хмарними інстансами.

Почати з хмари →
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.