Зворотний проксі, зворотний проксі-сервер, реверсивний проксі (reverse proxy) - це комплекс комп'ютерних програм, який призначений для контролю та розподілу вхідного трафіку між серверами веб-ресурсу.
Коли десятки мільйонів людей з усього світу приходять на Youtube, саме блок підсистем вирішує, з якого конкретного сервера брати відео та транслювати користувачеві. В основі цього блоку лежить зворотний проксі.
За неофіційними даними, у Youtube понад 2,5 мільйона серверів у 30+ дата-центрах на різних континентах. Для швидкої та надійної роботи сервісу важливо розподіляти вхідні запити та повертаємі потоки.
На момент написання статті найбільш відомі наступні зворотні проксі:
Деякі з цих програм спочатку створювалися з іншими завданнями та цілями, тому функціонал набагато більший, ніж у зворотного проксі. Зокрема, вони можуть виконувати функції веб-сервера, поштового сервера, прямого проксі тощо.
Якщо веб-ресурс розташований на кількох серверах, то зворотний проксі розподіляє вхідні запити рівномірно між ними.
Якщо будь-який сервер тимчасово виходить з ладу, то зворотний проксі "відчуває" це і припиняє направляти запити на нього. Після відновлення роботи сервера, запити автоматично починають надходити на нього.
За допомогою зворотного проксі з'являється можливість розміщення декількох серверів і навіть кластерів під одним URL.
Зворотний проксі може стискувати інформацію для користувача ще на боці веб-ресурсу.
Цей прийом значно прискорює відправку даних. Користувач отримує інформацію у стислому вигляді. Браузер "розпаковує" її за допомогою процесора користувацького пристрою, а не завантажує все через Інтернет.
Прискорення роботи сайтів за допомогою зворотного проксі здійснюється шляхом кешування (запам'ятовування) статичного та динамічного контенту, який надається сайтом.
Наприклад, якщо зворотний проксі відеохостингу "розуміє", що певний ролик користується підвищеною популярністю (багато запитів на його перегляд), то він може кешувати його і при наступних зверненнях не шукати потрібний сервер, а відразу надавати інформацію, причому ще й у стислому вигляді.
У більшості сучасних сайтів сторінка будується динамічно. Тобто користувач завантажує інформацію з бази даних сайту, а сама сторінка збирається браузером вже на пристрої користувача.
Якщо зв'язок з користувачем повільний, то сервер витрачає більше часу на видачу даних, ніж міг би. Тому можна налаштувати так, що сервер почне повністю передавати дані зворотному проксі, а проксі, "по чайній ложці", буде "годувати" повільного клієнта, а сервер швидко звільниться для виконання інших завдань.
Захист від DDoS-атак у більшості випадків будується за допомогою налаштування зворотного проксі для пропуску/блокування вхідного трафіку.
Блокування здійснюється на основі правил, які дозволяють системі відрізняти звичайних користувачів від зловмисників. Одним з таких правил є "Ліміт звернень".
Якщо веб-ресурс не підтримує роботу з зашифрованою інформацією, тобто не може приймати і віддавати HTTPS-трафік, то за допомогою встановлення і налаштування зворотного проксі цю проблему можна вирішити.
Цей вид тестування застосовується для перевірки гіпотез про поведінку користувачів при роботі з однотипними, але зробленими по-різному сервісами. Наприклад, двома посадочними сторінками, виконаними в різному дизайні.
При відповідних налаштуваннях зворотний проксі може приховати інформацію про сервери, що знаходяться після нього. Це є додатковим заходом захисту веб-сервісу - зовнішні системи не зможуть визначити IP адреси та місцезнаходження серверів.
Зворотний проксі-сервер - це програмне забезпечення, а не апаратне забезпечення. Це ПЗ розташоване на боці веб-ресурсу і призначене для фільтрації вхідного трафіку з перенаправленням його на сервери, балансування навантаження, прискорення роботи, захисту ресурсу від зовнішніх атак.