Android

Nginx-käänteisen välityspalvelimen asettaminen

Sisällysluettelo:

Anonim

Käänteinen välityspalvelin on palvelu, joka ottaa asiakaspyynnön, lähettää pyynnön yhdelle tai useammalle välityspalvelimelle, hakee vastauksen ja toimittaa palvelimen vastauksen asiakkaalle.

Suorituskykynsä ja skaalautuvuutensa vuoksi NGINX: ää käytetään usein käänteisenä välityspalvelimena HTTP- ja muille kuin HTTP-palvelimille. Tyypillinen käänteisen välityspalvelimen kokoonpano on asettaa Nginx Node.js-, Python- tai Java-sovellusten eteen.

Nginxin käyttäminen käänteisenä välityspalvelimena antaa sinulle useita lisäetuja:

  • Kuormituksen tasapainotus - Nginx voi suorittaa kuormituksen tasapainottamisen jakaaksesi asiakkaiden pyyntöjä välityspalvelimille, mikä parantaa suorituskykyä, skaalautuvuutta ja luotettavuutta. Välimuisti - Kun Nginx on käänteinen välityspalvelin, voit välimuistiin sivujen esimuotoillut versiot nopeuttaa sivujen latausaikoja. Se toimii tallentamalla välimuisti välityspalvelimien vastauksista vastaanotetun sisällön ja käyttämällä sitä vastaamaan asiakkaille tarvitsematta ottaa yhteyttä välityspalvelimeen samaa sisältöä joka kerta. SSL-lopettaminen - Nginx voi toimia SSL-päätepisteenä yhteyksissä asiakkaiden kanssa. Se käsittelee ja purkaa saapuvat SSL-yhteydet ja salaa välityspalvelimen vastaukset. Pakkaus - Jos välityspalvelin ei lähetä pakattuja vastauksia, voit määrittää Nginxin pakkaamaan vastaukset ennen niiden lähettämistä asiakkaille. DDoS-hyökkäysten lieventäminen - Voit rajoittaa saapuvat pyynnöt ja yhteyksien määrän yhtä IP-osoitetta kohti tavallisille käyttäjille tyypilliseen arvoon. Nginx antaa sinun myös estää tai rajoittaa pääsyä asiakkaan sijainnin ja pyyntöotsikoiden, kuten “User-Agent” ja “Referrer”, perusteella.

Tässä artikkelissa kuvataan vaiheet, joita tarvitaan Nginxin määrittämiseen käänteiseksi välityspalvelimeksi.

edellytykset

Oletamme, että Nginx on asennettu Ubuntu-, CentOS- tai Debian-palvelimelle.

Nginxin käyttäminen käänteisenä välityspalvelimena

Jos haluat määrittää Nginxin käänteisenä välityspalvelimena HTTP-palvelimelle, avaa verkkotunnuksen palvelinlohkon määritystiedosto ja määritä sijainti ja välityspalvelin sen sisällä:

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

Välityspalvelimen URL-osoite asetetaan käyttämällä proxy_pass -direktiiviä, ja se voi käyttää HTTP tai HTTPS protokollaa, toimialueen nimeä tai IP-osoitetta ja valinnaista porttia ja URI-osoitetta.

Yllä oleva kokoonpano kertoo Nginxin lähettävän kaikki pyynnöt /app sijaintiin välityspalvelimelle osoitteessa http://127.0.0.1:8080 .

Ubuntu- ja Debian-pohjaisissa jakeluissa palvelinlohkotiedostot tallennetaan hakemistoon /etc/nginx/sites-available , kun taas CentOS-hakemistossa /etc/nginx/conf.d .

Otetaan seuraava esimerkki, jotta proxy_pass paremmin proxy_pass miten location ja proxy_pass toimivat:

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

Jos vierailija käyttää http://example.com/blog/my-post , Nginx välittää tämän pyynnön osoitteeseen http://node1.com:8000/wordpress/my-post .

Kun välityspalvelimen osoite sisältää URI: n ( /wordpress/ ), välityspalvelimelle siirretty pyynnön URI korvataan direktiivissä määritellyllä URI: llä. Jos välityspalvelimen osoite määritetään ilman URI: tä, koko pyynnön URI välitetään välityspalvelimelle.

Pyyntöotsikoiden hyväksyminen

Kun Nginx välittää pyynnön, se määrittelee automaattisesti kaksi otsikkokenttää välityspalvelimen välityspyynnöissä, Host ja Connection , ja poistaa tyhjät otsikot. Host on asetettu muuttuja $proxy_host , ja Connection on asetettu sulkeutumaan.

Voit säätää tai asettaa välityspalvelimille otsakkeita proxy_set_header -direktiivillä, jota seuraa otsikon arvo. Löydät luettelon kaikista saatavilla olevista pyyntöotsikoista ja niiden sallituista arvoista täältä. Jos haluat estää otsikon siirtämisen välityspalvelimelle, aseta se tyhjälle merkkijonolle "" .

Seuraavassa esimerkissä muutamme isäntäotsikkokentän arvoksi $host ja poistamme Accept-Encoding otsikkokentän asettamalla sen arvoksi tyhjä merkkijono.

location / { proxy_set_header Host $host; proxy_set_header Accept-Encoding ""; proxy_pass http://localhost:3000; }

Aina kun muutat asetustiedostoa, sinun on käynnistettävä Nginx-palvelu uudelleen, jotta muutokset tulevat voimaan.

Nginxin määrittäminen käänteisenä välityspalvelimena ei-HTTP-välityspalvelimelle

Voit määrittää Nginxin käänteisenä välityspalvelimena ei-HTTP-välityspalvelimelle käyttämällä seuraavia ohjeita:

  • fastcgi_pass - käänteinen välityspalvelin FastCGI-palvelimelle. uwsgi_pass - käänteinen välityspalvelin uwsgi-palvelimelle. scgi_pass - käänteinen välityspalvelin SCGI-palvelimelle. memcached_pass - käänteinen välityspalvelin Memcached-palvelimelle.

Yksi yleisimmistä esimerkeistä on käyttää Nginxiä käänteisenä välityspalvelimena PHP-FPM: lle:

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

Yleiset Nginx-käänteisen välityspalvelimen vaihtoehdot

Sisällön tarjoamisesta HTTPS: n kautta on tullut nykyään standardi. Tässä osiossa annetaan sinulle esimerkki HTTPS Nginx -palvelimen välityspalvelimen kokoonpanosta, mukaan lukien suositellut Nginx-välityspalvelimen parametrit ja otsikot.

location/ { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; }

  • proxy_http_version 1.1 - Määrittää proxy_http_version 1.1 HTTP-protokollan version, oletuksena sen asetukseksi 1, 0. Verkkosovelluksissa ja jatkuvissa yhteyksissä on käytettävä versiota 1.1. proxy_cache_bypass $http_upgrade - Asettaa olosuhteet, joissa vastausta ei oteta välimuistista. Upgrade $http_upgrade ja Connection "upgrade" - Nämä otsikkokentät ovat pakollisia, jos sovelluksesi käyttää verkkojohtoja. Host $host - Seuraavassa tärkeysjärjestyksessä oleva $host -muuttuja sisältää: isäntänimi pyyntöriviltä tai isäntänimi isäntäpyynnön otsikkokentästä tai palvelimen nimi, joka vastaa pyyntöä. X-Real-IP $remote_addr - X-Real-IP $remote_addr todellisen vierailijan etä-IP-osoitteen välityspalvelimelle. X-Forwarded-For $proxy_add_x_forwarded_for - X-Forwarded-For $proxy_add_x_forwarded_for - luettelo, joka sisältää kaikkien palvelimien IP-osoitteet, joille asiakas on välityspalvelun kautta. X-Forwarded-Proto $scheme - Kun sitä käytetään HTTPS-palvelinlohkossa, jokainen välityspalvelimen HTTP-vastaus kirjoitetaan uudelleen HTTPS: lle. X-Forwarded-Host $host - määrittelee asiakkaan pyytämän alkuperäisen isännän. X-Forwarded-Port $server_port - määrittää asiakkaan pyytämän alkuperäisen portin.

johtopäätös

Olet oppinut käyttämään Nginxiä käänteisenä välityspalvelimena. Olemme myös osoittaneet sinulle, kuinka välittää lisäparametreja palvelimelle ja muokata ja asettaa erilaisia ​​otsikkokenttiä välityspalvelimissa.

nginx