Nginx

Nginx apgrieztais starpniekserveris

Nginx apgrieztais starpniekserveris

Kas ir apgrieztais starpniekserveris?

Starpniekserveris ir tas, kas jūsu vārdā runā ar internetu. Piemēram, ja jūsu koledžas tīkls ir bloķējis vietni https: // www.facebook.com / bet domēns https: // exampleproxy.com joprojām ir pieejama, tad jūs varat apmeklēt pēdējo, un tas pārsūtīs visus jūsu pieprasījumus pēc Facebook serveriem uz Facebook un nosūtīs atbildes no Facebook atpakaļ uz jūsu pārlūkprogrammu.

Atkārtoti sakot, starpniekserveris nosūta pieprasījumus viena no vairākiem klientiem vārdā uz jebkuriem serveriem internetā. Reversā starpniekserveris rīkojas līdzīgi.

A reversais starpniekserveris saņem pieprasījumu no visiem klientiem viena vai vairāku vārdā serveriem. Tātad, ja jums ir pāris serveri, kas mitina ww1.piemērs.com un ww2.piemērs.com apgrieztais starpniekserveris var pieņemt pieprasījumus abu serveru vārdā, pārsūtīt šos pieprasījumus uz to attiecīgajiem galapunktiem, kur tiek ģenerēta atbilde, un nosūtīt atpakaļ uz apgriezto starpniekserveri, lai tos pārsūtītu klientiem.

Izveidots

Pirms sākam pielāgot Nginx konfigurācijas failus un izveidojam reverso starpniekserveri. Es vēlos iemūrēt to, kā izskatās mans iestatījums, tāpēc, mēģinot īstenot savu dizainu, tas būtu mazāk mulsinoši.

Es izmantoju DigitalOcean platformu, lai izveidotu trīs VPS. Viņi visi atrodas vienā tīklā, katrs ar savu privāto IP, un tikai vienam VPS ir statisks publisks IP (tas būs mūsu reversais starpniekserveris.)

VM / resursdatora nosaukums Privāts IP Publisks IP Loma
Reversepoksi 10.135.123. lpp.187 159. lpp.89.108. lpp.14 Apgrieztais starpniekserveris, darbojas Nginx
Mezgls-1 10.135.123. lpp.183 N / A Darbojas pirmā vietne
Mezgls-2 10.135.123. lpp.186 N / A Darbojas otrā vietne

Divām dažādām darbojošajām vietnēm ir domēna vārdi w1.ranvirslog.com un ww2.ranvirslog.com un abi viņu A ieraksti norāda uz reverseproxy publisko IP, t.i.e, 159.89.108. lpp.14

Privātā IP ideja ir tāda, ka trīs VM var sarunāties savā starpā, izmantojot šo privāto IP, bet attālais lietotājs var piekļūt tikai reversā starpniekservera VM savā publiskajā IP. Tas ir svarīgi paturēt prātā. Piemēram, jūs nevarat ssh iekļūt nevienā VM, izmantojot tā privāto IP.

Turklāt gan Node-1, gan Node-2 ir Apache tīmekļa serveris, kas apkalpo divas atšķirīgas tīmekļa lapas. Tas mums palīdzēs atšķirt vienu no otra.

Pirmajā vietnē ir rakstīts “DARBS 1. MĀJAS LAPA!!!”

Līdzīgi to parāda arī otrā vietne:

Jūsu vietnes var atšķirties, taču, ja vēlaties atkārtot šo iestatījumu kā sākuma punktu, palaidiet apt install apache2 mezglos Node-1 un Node-2. Pēc tam rediģējiet failu / var / www / html / index.html, lai tīmekļa serveris pateiktu visu, ko vēlaties.

Reverseproxy VM joprojām nav skarts. Visos VM darbojas Ubuntu 18.04 LTS, bet jūs varat brīvi izmantot jebkuru citu vēlamo OS. Jūs pat varat to atdarināt, izmantojot Docker konteinerus. Izveidojot lietotāja definētu Docker tilta tīklu un tajā nārstojošus konteinerus, varat katram konteineram piešķirt privātu IP un pārsūtīt visu HTTP / HTTPS starpniekserveri vienam konteineram, kas būtu mūsu Nginx reversā starpniekservera konteiners.

Tik tālu, labi.

Nginx noklusējuma konfigurācija

Sāksim ar Nginx instalēšanu reverseproxy serverī, es izmantoju Ubuntu, tāpēc mans pakotņu pārvaldnieks ir piemērots:

$ sudo apt instalējiet nginx

Noklusējuma konfigurācijas noņemšana, ja izmantojat Debian balstītu izplatīšanu

Pirms mēs dodamies tālāk, neliela piezīme par Nginx konfigurāciju. Visi dažādie konfigurācijas faili tiek saglabāti mapē / etc / nginx, ieskaitot nginx.conf fails, kas ir galvenais konfigurācijas fails. Ja mēs aplūkosim šī faila saturu (http blokā), pamanīsit šādas divas rindas:


ietver / etc / nginx / conf.d / *.konf;
iekļaut / etc / nginx / sites-enabled / *;

Otrajā rindā ir iekļauti visi faili direktorijā, kurā iespējotas vietnes, atbilstoši Nginx konfigurācijai. Šī ir standarta prakse lielākajai daļai Debian balstītu izplatījumu. Piemēram, noklusējuma “Welcome to Nginx” tīmekļa vietnei ir atbilstošs fails ar nosaukumu default kā atrašanās vieta / etc / nginx / sites-available / default ar simlink uz / etc / nginx / sites-enabled /, taču mums tas nav nepieciešams noklusējuma vietne, lai mēs varētu droši noņemt simlink. Oriģināls joprojām ir pieejams vietnēs pieejamajā direktorijā.

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

Bet, kad mēs izveidosim reverso starpniekservera konfigurāciju, mēs to darīsim konf.d direktoriju (ar mūsu faila nosaukumu ir .konf pagarinājums) tas ir universāli, un darbojas visos izplatījumos, ne tikai Debian vai Ubuntu.

Notiek noklusējuma konfigurācijas noņemšana citiem rajoniem

Ja neizmantojat Debian balstītu izplatīšanu, jūs atradīsit noklusējumu Sākumlapa konfigurācija vietnē / etc / nginx / conf.d / noklusējums.conf vienkārši pārvietojiet failu uz drošu vietu, ja vēlaties to izmantot nākotnē (jo tā nav simlink)

$ mv / etc / nginx / conf.d / noklusējums.conf ~ / noklusējums.konf

Dažreiz to var atrast mapē / etc / nginx / default.d, jo cilvēki vienkārši nevar vienoties par vienu vienkāršu standartu! Tātad, lai to izdomātu, jums vajadzētu mazliet rakt / etc / nginx direktorijā.

Reverso starpniekservera bloku pievienošana

Kā minēts iepriekš, ir divi dažādi domēna vārdi, kurus es mitinu aiz šī starpniekservera

  1. ranvirslog.com (1. WEBSITE) ar IP 10.135.123. lpp.183
  2. ranvirslog.com (2. WEBSITE) ar IP 10.135.123. lpp.186

Tātad izveidosim vienu failu katrai vietnei mapē / etc / nginx / conf.d / mape. Tātad mēs esam labi organizēti.

$ touch / etc / nginx / conf.d / w1.konf
$ touch / etc / nginx / conf.d / ww2.konf

Failus varat nosaukt, kā vien vēlaties, ja vien tiem ir .conf nosaukuma beigās.

Pirmajā failā ww1.conf pievieno šādas rindas:

serveris
klausīties 80;
klausies [::]: 80;
 
servera_nosaukums ww1.ranvirslog.com;
 
atrašanās vieta /
proxy_pass http: // 10.135.123. lpp.183 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

Klausīšanās paziņojumi liek Nginx klausīties 80. ostā gan IPv4, gan IPv6 gadījumos. Pēc tam tas pārbauda, ​​vai servera_nosaukums ir ww1.ranvirslog.com, pēc tam atrašanās vietas bloks sāk un aizvieto pieprasījumu uz http: // 10.135.123. lpp.183 / ar buferizāciju izslēgtu. Turklāt līnija proxy_set_header… nodrošina klienta sākotnējā IP pārsūtīšanu uz starpniekserveri. Tas ir noderīgi, ja vēlaties aprēķināt unikālo apmeklētāju skaitu utt. Pretējā gadījumā tuvinātajam serverim būtu tikai viens apmeklētājs - Nginx serveris.

Buferēšanas opcija un set_header opcijas ir pilnīgi neobligātas un ir tikai pievienotas, lai starpniekserveri padarītu pēc iespējas caurspīdīgāku. Par ww2.ranvirslog.com vietni, es pievienoju šādu konfigurāciju vietnē / etc / nginx / conf.d / ww2.konf:

serveris
klausīties 80;
klausies [::]: 80;
 
servera_nosaukums ww2.ranvirslog.com;
 
atrašanās vieta /
proxy_pass http: // 10.135.123. lpp.186 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

Saglabājiet abus failus un pārbaudiet, vai kopējā konfigurācija ir derīga

$ sudo nginx -t

Ja ir kļūdas, iepriekš minētās komandas izeja palīdzēs tās atrast un novērst. Tagad restartējiet serveri:

$ service nginx restart

Un jūs varat pārbaudīt, vai tas darbojas vai nē, apmeklējot dažādus domēna vārdus savā pārlūkprogrammā un redzot rezultātu.

Secinājums

Katra indivīda lietošanas gadījums ir atšķirīgs. Iepriekš minētajai konfigurācijai, iespējams, būs nedaudz jāpielāgo, lai tā darbotos atbilstoši jūsu scenārijam. Varbūt jūs izmantojat vairākus serverus vienā resursdatorā, bet dažādās ostās, tādā gadījumā līnijai proxy_pass… vērtība būs http: // localhost: portNumber /.

Šī informācija ir ļoti atkarīga no jūsu lietošanas gadījuma. Sīkāku informāciju par citām iespējām un pielāgojamiem materiāliem skatiet oficiālajos Nginx dokumentos.

OpenTTD apmācība
OpenTTD ir viena no populārākajām biznesa simulācijas spēlēm. Šajā spēlē jums ir jāizveido brīnišķīgs transporta bizness. Tomēr jūs sāksit sākumā apmē...
SuperTuxKart operētājsistēmai Linux
SuperTuxKart ir lielisks nosaukums, kas paredzēts, lai sniegtu jums Mario Kart pieredzi bez maksas jūsu Linux sistēmā. Tas ir diezgan izaicinoši un ja...
Cīņa par Vesnota apmācību
Cīņa par Vesnotu ir viena no populārākajām atvērtā koda stratēģijas spēlēm, kuru jūs varat spēlēt šajā laikā. Šī spēle ir izstrādāta ne tikai ļoti ilg...