Cum să utilizați apache ca un proxy inversă folosind mod_proxy pe ubuntu

server proxy inversă - este tipul de server proxy care relee HTTP / HTPPS-cereri la unul sau mai multe servere de back-end. Reverse proxy-uri sunt utile, cât mai multe aplicații moderne web pentru procesare HTTP cerere folosind aplicația de back-end servere (pentru care utilizatorii nu au acces direct), și de multe ori acceptă numai funcții HTTP de bază.

Prin urmare, puteți utiliza un server proxy inversă, în scopul de a avertiza utilizatorii pentru a avea acces direct la cele mai importante servere de aplicații. Utilizarea unui server proxy inversă va ajuta să redistribuie sarcina de cereri primite pentru alte servere de aplicații. Datorită acestei performanțe îmbunătățite și a crescut reziliența.

În acest articol vă va învăța cum să configurați Apache pentru a utiliza ca un server proxy inversă folosind mod_proxy - modul Apache pentru a redirecționa conexiuni la unul sau mai multe servere de back-end, în aceeași rețea. Acest ghid folosește un backend simplu scris folosind cadrul Flask, dar puteți folosi orice backend la discretie.

cerinţe

Pentru a efectua acțiunile necesare, veți avea nevoie de:

  • server cu Ubuntu 16.04 sistem de operare și utilizatorul, care poate rula comenzi sudo;
  • instalat pe server Apache.

Pasul 1: Activați modulele necesare Apache

Există mai multe module Apache, care sunt incluse și disponibile pentru utilizare, dar să nu fie activate după instalare. Prin urmare, este necesar să se permită modulele să fie utilizate în acest manual.

Modulul necesar - este mod_proxy, și mai multe programe de completare care se extind funcționalitatea și vă permit să sprijine o varietate de protocoale de rețea. Dacă înregistrarea mai precis, necesitatea:

  • mod_proxy - Apache modul principal de a redirecționa conexiuni; Datorită lui, Apache poate acționa ca un gateway pentru principalele servere de aplicații;
  • mod_proxy_http - vă permite să utilizați un proxy pentru HTTP;
  • mod_proxy_balancer și mod_lbmethod_byrequests - adăugați funcții de echilibrare a sarcinii pentru serverele back-end.

Pentru a activa modulul, efectuați următoarele comenzi în ordinea corespunzătoare:

Apoi reporniți Apache pentru ca modificările să aibă efect.

Acum Apache va acționa ca un server proxy inversă pentru HTTP-cereri. Următorul pas nu este obligatorie, dar va ajuta pentru a testa activitatea Apache și asigurați-vă că totul funcționează așa cum trebuie. Pentru a face acest lucru, creați două server de back-end de bază, dar dacă le aveți deja în stoc, atunci puteți trece la pasul 3.

Pasul 2: Crearea de testare servere back-end

Rularea câteva servere de bază de back-end - o mare oportunitate de a testa dacă este sau nu funcționează corect Apache. Prin urmare, trebuie să creați două servere, care vor răspunde la HTTP-cereri de imprimare o linie de text. One va răspunde "Hello World!", Celălalt "Bună ziua Timeweb!".

Notă. Dacă nu vorbim despre termen de încercare, acesta este de obicei serverele backend dau același tip de conținut. Cu toate acestea, testul va fi mai convenabil în cazul în care este de două servere cu diferite mesaje, deoarece va fi mai ușor pentru a urmări în jos echilibrarea încărcării funcționează corect.

Flask - microframework este Python, care este folosit pentru a crea aplicații web. În acest ghid vom folosi Flask, astfel cum se scrie o cerere de bază necesită doar câteva linii. Nu aveți nevoie să știe Python pentru a efectua acțiuni suplimentare.

Pentru a începe, să actualizeze lista de pachete disponibile:

Acum setați PIP, a recomandat sistem de ambalare Python.

Și când Pip ajutor setat Flaconul a:

Acum, că toate componentele necesare sunt instalate, puteți merge pe pentru a crea fișierul, care va fi necesară pentru primul cod de server de back-end.

Copiați textul într-un fișier, care este prezentat mai jos, și apoi salvați și închideți fișierul.

Primele două linii inițializa cadrul Flask. Unicul Locuinta function () va da un șir de caractere de text ( "Hello World!"). Și pentru asta, acest text apare ca răspuns la un HTTP-cereri, raspunsuri @ app.route ( „/“).

Al doilea Serverul backend va fi la fel ca prima, cu excepția pentru o singură diferență în text.

Deci, mai întâi trebuie să copiați mai întâi fișierul:

Acum, deschide un nou fișier este copiat:

Și, în ultimul rând în loc de „Hello World!“ Scrie, de exemplu, „Bună ziua Timeweb!“:

Comanda de mai jos va lansa primul server de back-end, portul său 8080.

Al doilea Serverul trebuie să ruleze același, portul său 8081:

Acum, să testeze activitatea ambelor servere.

Ca răspuns, ar trebui să obțineți o „lume Bună ziua!“.

În acest caz, veți vedea inscripția terminalului „Bună ziua Timeweb!“.

Notă. Pentru a închide atât serverul de test (de exemplu, după efectuarea tuturor acțiunilor din acest ghid), puteți rula pur și simplu următoarea comandă: killall balon.

În continuare, vom schimba fișierul de configurare Apache pentru a avea posibilitatea de a folosi ca un server proxy invers.

Pasul 3: Modificarea setărilor inițiale pentru a permite proxy

În această parte, aveți nevoie pentru a face modificări la gazda virtuală originală Apache a acționat ca un server proxy inversă pentru unul sau mai multe servere de back-end.

În interiorul acestui fișier, localizați blocul cu prima linie . Primul exemplu de mai jos demonstrează cum să modificați fișierul de a utiliza un server proxy inversă pentru un server backend, iar al doilea exemplu - pentru a seta sarcina de echilibrare pentru servere backend multiple.

1 exemplu: proxy inversă pentru un server backend

Copiați textul de mai jos în locul întregului text în blocul VirtualHost, care este de a in cele din urma bloc arata ca acest lucru:

Unitatea utilizează trei directive:

După efectuarea modificărilor trebuie să reporniți Apache:

Exemplul 2: echilibrarea încărcării între mai multe servere de back-end

Dacă aveți mai multe servere de back-end este o idee bună atunci când se utilizează un proxy pentru a distribui traficul între ele; se poate face prin utilizarea echilibrarea încărcării de utilitate mod_proxy.

Ca și în primul exemplu, atunci va trebui, de asemenea, pentru a înlocui textul din blocul VirtualHost pentru următoarele:

ProxyPass ProxyPassReverse și utilizarea de încărcare de echilibrare piscină Directiva numită ulMeu în loc de un anumit server.

Pentru a aplica modificările, reporniți Apache:

concluzie

Acum, că știi cum să configurați Apache ca un server proxy invers pentru unul sau mai multe servere de back-end. mod_proxy poate fi utilizat în mod eficient pentru a configura un server proxy inversă cu aplicații scrise în diferite limbaje de programare și tehnologii, cum ar fi Python, Django sau Ruby și Ruby on Rails. Mod_proxy, de asemenea, pot fi folosite pentru echilibrarea încărcării pe mai multe servere backend multiple pentru site-urile cu o sarcină grea, pentru a asigura o disponibilitate ridicată a acestor resurse.

mod_proxy și mod_proxy_http cea mai populară combinație de module, dar există mai multe alte persoane care susțin alte protocoale de rețea. Cu toate că acest manual nu sunt utilizate, ele, de asemenea, pot fi identificate într-o listă:

  • mod_proxy_ftp pentru FTP;
  • mod_proxy_connect pentru SSL-tunel;
  • protocol mod_proxy_ajp pentru AJP (Apache JServ Protocol);
  • mod_proxy_wstunnel pentru prize web.

Cum să utilizați apache ca un proxy inversă folosind mod_proxy pe ubuntu