Поглед към по-малко коментирания nginx.

Заден план

Мнозина мислят за Nginx просто като за уеб сървър, да, това е уеб сървър и много повече, Nginx е преди всичко прокси двигател и сървърен механизъм за балансиране на натоварването, който е в състояние да работи като уеб сървър, използвайки какъвто и препроцесорен сървър да изберете бих искал, било то uWSGI, php-fpm и т.н.

Много от нас са чували за nginx и някои от нас очакват с нетърпение да проверят какво представлява, в тази част ще разгледаме добре как да използваме nginx като балансьор на натоварването и общ прокси пасер.

Предпоставка

Преди да започнете да работите с nginx, обикновено е важно (но не е задължително) да отговаряте на следните условия,

  • Търсите да научите и разберете още някои devOps
  • Имате разбиране за това какво е уеб сървър като цяло
  • Използвали сте компютър преди. 😏

Имате всичко това, значи сте готови.

Проксиране

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

Илюстрация тук

в nginx това се постига с помощта на директивата proxy pass.

С прокси пропуска има много трикове и те са важни за разбирането по отношение на настройката на система за прокси пропуск, нека да разгледаме някои от тях в книгите.

Съвпадащи префикси

на вашия компютър, ако приемем, че нашето приложение се обслужва на нашия локален хост порт 8000 (всъщност може да е всеки порт), продължавайки да използваме ssh, изпълняваме обратен тунел към порта на сървъра.

Това настройва обратния прокси, следователно всяка заявка, отиваща към coolsubdomain.mainname.com, всъщност идва към вашата локална машина.

Балансиране на натоварването

Балансирането на натоварването е друг проблем, който nginx е уникално позициониран за решаване, той е създаден да обработва много заявки и ако имаме няколко сървъра, изпълняващи нашия проект, можем да балансираме натоварването между тях, използвайки upstreams, балансирането на натоварването е широкообхватно, затова ние ще да се потопите малко дълбоко, но не прекалено много.

Nginx използва upstreams, за да балансира натоварването, както беше споменато по-рано, и има няколко алгоритми по подразбиране, които се изискват да се справят с механизма за балансиране на натоварването.

Тези алгоритми са определени от директиви и могат да бъдат отбелязани по следния начин.

  • (round robin): Алгоритъмът за балансиране на натоварването по подразбиране, който се използва, ако няма други директиви за балансиране. На всеки сървър, дефиниран в контекста нагоре по веригата, се предават заявки последователно на свой ред.
  • least_conn: Указва, че новите връзки винаги трябва да се предоставят на бекенда, който има най-малък брой активни връзки. Това може да бъде особено полезно в ситуации, в които връзките към бекенда може да продължат известно време.
  • ip_hash: Този алгоритъм за балансиране разпределя заявки към различни сървъри въз основа на IP адреса на клиента. Първите три октета се използват като ключ за вземане на решение кой сървър да обработи заявката. Резултатът е, че клиентите обикновено се обслужват от един и същ сървър всеки път, което може да помогне за последователността на сесиите.
  • хеш: Този алгоритъм за балансиране се използва главно с memcached прокси. Сървърите са разделени въз основа на стойността на произволно предоставен хеш ключ. Това може да бъде текст, променливи или комбинация. Това е единственият метод за балансиране, който изисква от потребителя да предостави данни, което е ключът, който трябва да се използва за хеша

При настройка, за балансиране на натоварването може да изглежда така.

Можем дори да добавим тегла към конкретен хост, така че те да обработват повече връзки като цяло от останалите според определено съотношение.

Заключение

Където има много други неща, които можем да постигнем с помощта на nginx, това е почти само върхът на айсберга. Настройването на уеб сървъри и прокси сървъри обикновено може да бъде малко неприятно, но не е задължително.

В следващата публикация в тази категория бих проучил как да стартирам това с помощта на caddy, това е технология за уеб сървър, която има за цел да направи процеса на настройка на уеб сървъри и прокси машини много по-лесен.