Nginx

Обратен прокси Nginx

Обратен прокси Nginx

Какво е обратен прокси?

Прокси сървърът е този, който говори от интернет от ваше име. Например, ако мрежата на вашия колеж е блокирала https: // www.facebook.com / но домейнът https: // exampleproxy.com все още е достъпен, след което можете да го посетите и той ще препрати всички ваши заявки за сървъри на Facebook към Facebook и ще изпрати отговорите от Facebook обратно във вашия браузър.

За да обобщим, прокси изпраща заявки от името на един от повече клиенти до всички сървъри в Интернет. Обратният прокси се държи по подобен начин.

A обратен прокси получава заявка от всички и от всички клиенти от името на един или повече сървъри. Така че, ако имате няколко сървъра, хостващи ww1.пример.com и ww2.пример.com обратният прокси сървър може да приема заявки от името на двата сървъра, да ги препраща към съответните им крайни точки, където се генерира отговорът и да се изпраща обратно към обратния прокси сървър, за да се препраща обратно към клиентите.

Конфигурацията

Преди да започнем да променяме конфигурационните файлове на Nginx и да направим обратен прокси сървър. Искам да задам в камък как изглежда моята настройка, така че когато се опитвате да реализирате своя дизайн, това би било по-малко объркващо.

Използвах платформата на DigitalOcean, за да завъртя три VPS. Всички те са в една и съща мрежа, всеки със собствен частен IP и само един VPS има статичен публичен IP (Това ще бъде нашият обратен прокси сървър.)

VM / Име на хост Частен IP Публичен IP Роля
Обратен прокси 10.135.123.187 159.89.108.14 Обратен прокси, работещ Nginx
Възел-1 10.135.123.183 Няма данни Стартиране на първия уебсайт
Възел-2 10.135.123.186 Няма данни Стартиране на втори уебсайт

Двата различни уебсайта, които се изпълняват, имат имена на домейни ww1.ranvirslog.com и ww2.ranvirslog.com и двата им записа A сочат към публичния IP на reverseproxy, т.е.д, 159.89.108.14

Идеята зад частния IP е, че трите виртуални машини могат да говорят помежду си чрез този частен IP, но отдалечен потребител има достъп само до обратната прокси виртуална машина при публичния си IP. Това е важно да се има предвид. Например не можете да влезете в ssh в никоя виртуална машина, използвайки нейния частен IP.

Освен това Node-1 и Node-2 имат уеб сървър на Apache, обслужващ две отделни уеб страници. Това ще ни помогне да различаваме едно от друго.

Първият уебсайт казва „УЕБСАЙТ 1 РАБОТИ!!!”

По същия начин вторият уебсайт показва това:

Вашите уебсайтове може да се различават, но ако искате да възпроизведете тази настройка като отправна точка, стартирайте apt install apache2 на Node-1 и Node-2. След това редактирайте файла / var / www / html / index.html, така че уеб сървърът да казва всичко, което искате да каже.

Обратната прокси VM все още е недокосната. Всички виртуални машини работят с Ubuntu 18.04 LTS, но можете да използвате всяка друга операционна система, която искате. Можете дори да емулирате това, като използвате контейнери на Docker. Чрез създаване на дефинирана от потребителя мостова мрежа на Docker и размножаване на контейнери върху нея, можете да присвоите на всеки контейнер частен IP и да препратите целия HTTP / HTTPS прокси до един контейнер, който би бил нашият Nginx обратен прокси контейнер.

Дотук добре.

Конфигурация по подразбиране на Nginx

Нека започнем с инсталиране на Nginx на обратния прокси сървър, използвам Ubuntu, така че apt е моят мениджър на пакети:

$ sudo apt инсталира nginx

Премахване на конфигурацията по подразбиране, ако използвате дистрибуция, базирана на Debian

Преди да продължим по-нататък, малка бележка за конфигурацията на Nginx. Всички различни конфигурационни файлове се съхраняват в / etc / nginx, включително nginx.conf, който е основният конфигурационен файл. Ако разгледаме съдържанието на този файл (вътре в http блока), ще забележите следните два реда:

..
включва / etc / nginx / conf.д/*.conf;
включва / etc / nginx / sites-enabled / *;
..

Вторият ред включва всички файлове в директорията с активирани сайтове към конфигурацията на Nginx. Това е стандартната практика за повечето дистрибуции, базирани на Debian. Например уеб страницата „Добре дошли в Nginx“ по подразбиране има съответния файл с име по подразбиране в местоположението / etc / nginx / sites-available / default със символна връзка към / etc / nginx / sites-enabled /, но ние не се нуждаем от това уеб страница по подразбиране, за да можем безопасно да премахнем символната връзка. Оригиналът все още е достъпен в директорията, достъпна за сайтове.

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

Но когато ще създадем обратна прокси конфигурация, ще го направим в conf.d директория (с името на нашия файл с .conf разширение) това е универсално, и работи във всички дистрибуции, не само в Debian или Ubuntu.

Премахване на конфигурацията по подразбиране за други дистрибуции

Ако не използвате дистрибуция, базирана на Debian, ще намерите подразбирането Страница за добре дошли конфигурация в / etc / nginx / conf.г / по подразбиране.conf просто преместете файла на безопасно място, ако искате да го използвате в бъдеще (тъй като това не е символна връзка)

$ mv / etc / nginx / conf.г / по подразбиране.conf ~ / по подразбиране.конф

Понякога може да бъде намерен в / etc / nginx / default.г, защото хората просто не могат да се споразумеят за един прост стандарт! Така че трябва да направите малко ровене в директорията / etc / nginx, за да разберете това.

Добавяне на обратни прокси блокове

Както беше посочено по-горе, двете различни имена на домейни, които хоствам зад този прокси, са

  1. ranvirslog.com (УЕБСАЙТ 1) с IP 10.135.123.183
  2. ranvirslog.com (УЕБСАЙТ 2) с IP 10.135.123.186

Така че нека създадем по един файл на уебсайт в / etc / nginx / conf.г / папка. Така че сме добре организирани.

$ touch / etc / nginx / conf.г / ww1.конф
$ touch / etc / nginx / conf.г / ww2.конф

Можете да назовавате файловете каквото пожелаете, стига да има .conf в края на името си.

В първия файл ww1.conf добавете следните редове:

сървър
слушайте 80;
слушайте [::]: 80;
 
име на сървър ww1.ranvirslog.com;
 
местоположение /
proxy_pass http: // 10.135.123.183 /;
прокси_буфериране изключено;
proxy_set_header X-Real-IP $ remote_addr;

Операторите за слушане казват на Nginx да слуша на порт 80 както за IPv4, така и за IPv6 случаи. След това проверява дали името на сървъра е ww1.ranvirslog.com, след това блокът за местоположение започва и проксира заявката за http: // 10.135.123.183 / с изключен буфер. Освен това линията proxy_set_header… гарантира, че оригиналният IP адрес на клиента се препраща към проксирания сървър. Това е полезно в случай, че искате да изчислите броя на уникалните посетители и т.н. В противен случай прокси сървърът ще има само един посетител - сървърът Nginx.

Опцията за буфериране и опциите set_header са напълно незадължителни и са просто добавени, за да направят проксирането възможно най-прозрачно. За ww2.ranvirslog.com уебсайт, добавих следната конфигурация в / etc / nginx / conf.г / ww2.conf:

сървър
слушайте 80;
слушайте [::]: 80;
 
име на сървър ww2.ranvirslog.com;
 
местоположение /
proxy_pass http: // 10.135.123.186 /;
прокси_буфериране изключено;
proxy_set_header X-Real-IP $ remote_addr;

Запазете и двете файлове и проверете дали общата конфигурация е валидна или не:

$ sudo nginx -t

Ако има грешки, изходът на горната команда ще ви помогне да ги намерите и поправите. Сега рестартирайте сървъра:

$ service nginx рестартиране

И можете да тествате дали е работило или не, като посетите различните имена на домейни във вашия браузър и видите резултата.

Заключение

Случаят на употреба на всеки индивид е различен. Споменатата по-горе конфигурация може да се нуждае от малко промяна, за да работи за вашия сценарий. Може би изпълнявате множество сървъри на един и същ хост, но на различни портове, в този случай редът proxy_pass ... ще има http: // localhost: portNumber / като стойност.

Тези подробности зависят много от вашия случай на употреба. За повече подробности относно други опции и мелодии вижте официалните документи на Nginx.

Как да променяте настройките на мишката и тъчпада с помощта на Xinput в Linux
Повечето дистрибуции на Linux се доставят с библиотека “libinput” по подразбиране за обработка на входни събития в системата. Той може да обработва вх...
Пренастройте бутоните на мишката си по различен начин за различен софтуер с X-Mouse Button Control
Може би се нуждаете от инструмент, който може да промени контрола на мишката с всяко приложение, което използвате. Ако случаят е такъв, можете да изпр...
Преглед на безжична мишка на Microsoft Sculpt Touch
Наскоро прочетох за Microsoft Sculpt Touch безжична мишка и реших да я купя. След като го използвах известно време, реших да споделя опита си с него. ...