Налаштування зворотного проксі

Налаштування зворотного проксі

25.11.2022
Автор: HostZealot Team
2 мін.
417

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

Навіщо потрібен зворотний проксі

Сценаріїв використання технології може бути кілька. Розглянемо основні:

  1. Приховування існування опитуваних ним серверів, а також їхніх характеристик.
  2. Захист від DoS і DDoS – для цього у зв'язці зі зворотним проксі системні адміністратори ставлять програмний брандмауер.
  3. Як милицю – якщо на основному сайті відсутня підтримка підключення через SSL, можна підключити зворотний проксі-сервер із наявністю апаратного SSL-прискорювача.
  4. Використання як балансувальник навантажень – такий сервер може забезпечити рівномірний розподіл навантаження між двома, трьома і більше серверами.
  5. Зниження навантаження на основний сервер завдяки розміщенню на зворотному проксі динамічного і статичного вмісту сайту. Цей метод часто називають акселерацією.
  6. Компресія даних з метою скорочення часу завантаження.
  7. Може застосовуватися для безпечного і зручного A/B-тестування.

Тепер ви знаєте, для чого потрібен зворотний проксі. Перейдемо до практики.

Використання Nginx як зворотного проксі-сервера

Насамперед відкривайте файл конфігурації блоку сервера домену. У ньому необхідно вказати розташування і проксі-сервер:

server {
    listen 80;
    server_name www.example.com example.com;
 
    location /app {
       proxy_pass http://127.0.0.1:7070;
	}

}


URL сервера, який потрібно проксирувати, встановлюють із proxy_pass директиви proxy_pass. Це дає змогу використовувати HTTP або HTTPS:

  • як протокол;
  • домену;
  • IP-адреси;
  • необов'язкового порту;
  • уніфікованого ідентифікатора ресурсу як адреси.

Представлена вище конфігурація дає команду Nginx пересилати всі запити в /app проксі-серверу за адресою http://127.0.0.1:7070. Ви можете поміняти на потрібний вам айпі. Надано тільки заради ознайомлення.

Файли з серверними блоками зберігаються в каталозі /etc/nginx/sites-available – якщо ви користуєтеся Ubuntu або Debian, а також у /etc/nginx/conf.d, якщо використовуєте CentOS.

Налаштування зворотного проксі

Для наочної ілюстрації роботи proxy_pass директиви location і proxy_pass розглянемо простий приклад:

server {
    listen 80;
    server_name www.example.com example.com;
 
    location /blog {
       proxy_pass http://node1.com:6000/wordpress/;
	}

}


Коли відвідувач сайту звернеться до http://example.com/blog/my-post, веб-сервер Nginx ретранслює цей запит через проксі на http://node1.com:6000/wordpress/my-post.

Якщо адреса сервера, що проксірується, містить уніфікований ідентифікатор ресурсу, ( /wordpress/ ), URI запиту, що транслюється на сервер, що проксірується, замінюється на URI, що вказано в директиві. У разі, коли адреса проксі-сервера вказана без уніфікованого ідентифікатора ресурсу, повний URI запиту передається на проксі-сервер.

Як налаштувати Nginx як зворотний проксі для проксі-сервера без HTTP

Для цього використовується одна з чотирьох директив:

  • fastcgi_pass – зворотний проксі до сервера FastCGI.
  • uwsgi_pass – зворотний проксі до сервера uwsgi.
  • scgi_pass – зворотний проксі до сервера SCGI.
  • memcached_pass – зворотний проксі до сервера Memcached.

Наприклад, дуже часто Nginx використовують як зворотний проксі-сервер PHP-FPM:

server {
 
	# ... other directives
 
    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
	}

}


При зміні файлу конфігурації обов'язково перезапускайте веб-сервер Nginx, щоб зміни набули чинності. Якщо залишилися питання, звертайтеся до наших фахівців через лайв чат.

# Як зробити Поділитися:
Статті за темою