En reverse proxy sidder foran en webserver og modtager alle anmodninger, før de når oprindelsesserveren. Det fungerer på samme måde som en forward proxy, undtagen i dette tilfælde er det webserveren, der bruger proxyen i stedet for brugeren eller klienten. Reverse proxyer bruges typisk til at forbedre ydeevne, sikkerhed og pålidelighed af webserveren.
Du kan f.eks. have et ikke-WordPress-websted hostet på example.com
-domænet på server A, og dets blog kører på WordPress på example.com/blog
-URL hostet på server B. Du kan opnå dette ved at tilføje en reverse proxy for server, der hoster dit primære websted. Du kan konfigurere den reverse proxy til at omdirigere anmodninger til bloggen til en anden server (f.eks. en administreret WordPress-host som Kinsta).
I denne artikel lærer du det grundlæggende om reverse proxy-servere, hvordan de fungerer, hvad deres største fordele er, og hvordan du kan bruge dem til at fremskynde og sikre dit WordPress-websted.
Begejstret? Lad os begynde!
Hvad er en reverse proxy??
For at forstå, hvad en reverse proxy-server er, skal du først kende dens rolle og blive fortrolig med alle dens relaterede termer.
Når du surfer på nettet normalt ved at indtaste et domænenavn eller klikke på et link, forbinder din browser/enhed direkte til hjemmesidens server og begynder at downloade dens ressourcer.
Hvis du ønsker at anonymisere din IP-adresse fra de websteder, du besøger, så kan du bruge en proxy-server til at sende alle dine anmodninger til den først. Det videresender dine anmodninger til en DNS-resolver og downloader derefter webstedets ressourcer fra dets oprindelsesserver.
Bagefter videregiver den disse ressourcer til din enhed. Dette kaldes en forward proxy.
Du er fuldstændig skjult fra webstedet, da det tror, at din anmodning stammer fra den videregående proxy.
Udover at forbedre brugernes privatliv, bruges en forward proxy hovedsageligt til at omgå geografiske indholdsbegrænsninger. For eksempel, hvis du vil se en video, der er blokeret i dit område, kan du bruge en fremadrettet proxy med en IP-adresse, som videoen er tilgængelig på.
En fremadrettet proxy fungerer næsten på samme måde som et virtuelt privat netværk (VPN), men de er forskellige teknologier med unikke use cases (de kan dog nogle gange overlappe).
Reverse Proxyserver vs Forward Proxyserver
En reverse proxyserver fungerer som en front for oprindelsesserveren for at opretholde anonymitet og øge sikkerheden, ligesom hvordan en bruger/klient kan bruge en forward proxy til at opnå det samme. Det sikrer, at ingen bruger eller klient kommunikerer direkte med oprindelsesserveren.
Forskellen mellem en forward proxy og en reverse proxy er lille, men de fungerer anderledes.
Begge kan arbejde sammen, da der ikke er noget overlap mellem deres funktion. Typisk bruger brugere/klienter en fremadrettet proxy, mens oprindelsesservere bruger en reverse proxy.
Da en serveradministrator kan kontrollere, hvordan den reverse proxy fungerer, kan du bruge den til at aktivere mange nyttige funktioner.
Vi viser alle dens fordele senere i dette indlæg.
Hvorfor bruge en reverse proxy?
Mange virksomheder, især store virksomheder, bruger skræddersyede websteder, der er skræddersyet til deres unikke behov og ikke kører på WordPress. Nogle eksempler omfatter bank- og forsikrings-websteder.
I andre tilfælde kan en virksomhed hoste deres websted på en ekstern tjeneste, der ikke tillader dem at installere ekstern software (f.eks. WordPress). Normalt er disse små til mellemstore forhandlere, der bruger en e-handelsplatform som Shopify.
Da WordPress har robuste CMS-funktioner, foretrækker mange virksomheder, herunder store virksomheder med skræddersyede websteder, måske at hoste deres blogs ved hjælp af WordPress.
En måde at omgå dette problem på er at installere WordPress på hovedwebstedets underdomæne og strukturere navigationsmenuerne, så brugerne nemt kan skifte mellem hovedwebstedet og bloggen.
Da underdomæner opfører sig som et unikt domæne, kan det påvirke dit websteds SEO. Selvom Google behandler både underdomæner og undermapper ens, kræver det en større indsats at optimere en hjemmeside til søgemaskineplaceringer, hvis den er hostet på et underdomæne, end hvis den er hostet i en undermappe.
Google har bekræftet, at det behandler både underdomæner og undermapper ens, men nogle SEO-eksperter er uenige i det. Og selvom det ikke påvirker webstedets SEO, er et websted der er hostet i en undermappe, simpelthen nemmere at vedligeholde.
Det er derfor, du kan bruge en reverse proxy til at omdirigere anmodninger til webstedets blog, der er hostet på en separat server. For eksempel kan en bank hoste deres hovedwebsted på deres servere sikkert, men de kan også hoste deres WordPress-drevne blogs separat på en administreret WordPress-host som Kinsta.
At samle to forskellige websteder under et enkelt domænenavn er en af de vigtigste fordele ved at bruge en reverse proxy. Det hjælper brands med at holde deres websteder organiserede, professionelle og bevare troværdigheden.
Fordele ved at bruge en reverse proxy
Udover ovenstående use case giver reverse fuldmagter også mange andre fordele. Afsnittet nedenfor diskuterer nogle af deres største fordele.
Load balancing
En enkelt oprindelsesserver kan ikke håndtere al den indgående trafik til et websted med millioner af daglige unikke besøgende. I disse tilfælde kan du fordele trafikken smart mellem en pulje af mange servere. Normalt vil alle servere være host for det samme indhold for at eliminere et enkelt fejlpunkt, hvilket gør hjemmesiden mere pålidelig.
En reverse proxy er en fantastisk måde at konfigurere dette på, da den kan modtage den indgående trafik, før den når oprindelsesserveren. Hvis oprindelsesserveren er overbelastet eller svigter fuldstændigt, kan den distribuere trafikken til andre servere uden at påvirke webstedets funktionalitet.
Reverse proxys kan også dirigere de indgående anmodninger til flere servere, hvor hver server udfører en bestemt funktion, den er optimeret til. Den reverse proxys kan derefter samle svar fra alle serverne og levere dem til klienten.
Da vi bruger de fleste af de populære reverse proxyer primært til load balancing, omtales de også som Load balancers.
Global Server Load Balancing (GSLB)
GSLB er en avanceret load balancing-metode til fordeling af webstedstrafik mellem mange servere placeret strategisk rundt om i verden. Det gøres typisk via anycast routing-teknik, hvor den reverse proxy vælger server node baseret på den hurtigste rejsetid mellem klienten og serveren.
GSLB øger ikke kun webstedets pålidelighed og sikkerhed betydeligt, det reducerer også latens og indlæsningstider og forbedrer derved brugeroplevelsen. Du kan bruge GSLB med andre netværksoptimering teknikker som f.eks. Spoon Feeding for at frigøre oprindelsesservernes computational ressourcer endnu mere.
Selvom du kan konfigurere Global Server Load Balancing manuelt på din server, varetages det normalt af dedikerede CDN’er såsom Cloudflare og KeyCDN (som også driver Kinsta CDN). Kinsta betjener alle de websteder, der hostes med den, gennem en load balancer drevet af Google Cloud Platform.
Forbedret sikkerhed
Reversee proxyer kan skjule IP-adressen og andre karakteristika for oprindelsesservere. Således kan din hjemmesides oprindelsesserver bevare sin anonymitet bedre, hvilket øger dens sikkerhed betydeligt.
Da den reverse proxy vil modtage al trafik, før den når hovedserveren, vil enhver angribere eller hackere finde det sværere at målrette dit websted med sikkerhedstrusler såsom DDoS-angreb.
Du kan bruge en streng firewall til at hærde den reverse proxy med strammere sikkerhed mod almindelige cyberangreb. Uden en reverse proxy installeret er det svært at fjerne malware eller starte fjernelser.
En reverse proxy som HAProxy kan tilføje grundlæggende HTTP-adgangsgodkendelse til en webserver, der ikke har den aktiveret. Du kan også bruge en reverse proxy til at tilføje centraliseret godkendelse til forskellige typer anmodninger.
Kraftig Caching
Du kan bruge en reverse proxy til webaccelerationsformål ved at cache både statisk og dynamisk indhold. Dette kan reducere belastningen på oprindelsesserveren, hvilket resulterer i en hurtigere hjemmeside.
For eksempel, hvis din oprindelsesserver er i USA, og en bruger fra Europa besøger dit websted, så kan du servere en cachelagret version af dit websted fra en reverse proxyserver i Europa. Da den reverse proxy er tættere på brugeren end oprindelsesserveren, vil hjemmesiden tage kortere tid at indlæse, hvilket får den til at fungere fremragende.
Varnish og Nginx FastCGI er fremtrædende eksempler på reverse proxys, der bruges til at cache webindhold.
Hvis dit websted hostes hos Kinsta, behøver du ikke bekymre dig om caching, da Kinsta tager sig af alt caching-arbejdet for dig (inklusive at tilbyde avancerede funktioner som Edge Caching).
Overlegen kompression
Serversvar bruger meget båndbredde. Komprimering af serversvar (f.eks. med gzip), før de sendes til klienten, kan reducere mængden af krævet båndbredde, hvilket fremskynder serversvar over netværket.
En reverse proxy er ideel til at komprimere serversvar, da den sidder mellem oprindelsesserverne og klienten.
Optimeret SSL-kryptering
Kryptering og dekryptering af SSL/TLS-anmodninger for hver klient kan være meget belastende for oprindelsesserveren. En reverse proxy kan tage denne opgave op for at frigøre oprindelsesserverens ressourcer til andre vigtige opgaver, såsom visning af indhold.
En anden fordel ved at aflaste SSL/TSL-kryptering og dekryptering er at reducere ventetiden for klienter, der er geografisk fjernt fra oprindelsesserveren.
Du kan også vælge en reverse proxy med specialiseret SSL/TLS accelerationshardware for at optimere denne opgave endnu mere. En sådan reverse proxy kaldes en SSL/TLS-termineringsproxy. Nogle servere som Varnish understøtter ikke SSL/TSL-protokoller, så en reverse proxy for SSL/TSL-terminering kan hjælpe med at sikre den trafik, der passerer gennem dem.
Bedre A/B-testing
De fleste A/B-testværktøjer kræver, at du bruger eksterne JavaScript-biblioteker til at indlæse deres funktioner. Indlæsning af tredjeparts-scripts kan dog sænke dine sideindlæsningstider og skabe en hakkende oplevelse for brugerne.
I stedet kan du bruge en reverse proxy til at oprette to separate flows på selve serverniveauet. For eksempel kan du bruge Nginx’s split_clients
eller sticky route
metoder til at kontrollere trafikomdirigering.
Du kan henvise til tutorials om Nginx og freeCodeCamp for at lære mere om at udføre A/B-test med en reverse proxy.
Overvågning og logning af trafik
En reverse proxy fanger alle anmodninger, der går igennem den. Derfor kan du bruge dem som et centralt knudepunkt til at overvåge og logge trafik. Selvom du bruger flere webservere til at hoste alle dit websteds komponenter, vil brug af en reverse proxy gøre det lettere at overvåge alle indgående og udgående data fra dit websted.
De mest populære reverse proxyer
Ifølge W3Techs bruger næsten 83% af webstederne ingen reverse proxy-tjenester, som de overvåger.
Af de 17 % websteder, der bruger en reverse proxy (angivet ovenfor), vil du bemærke, at de fleste af dem er CDN’er. Det skyldes, at de fleste reverse proxyer skjuler deres eksistens som standard som en sikkerhedsforanstaltning. Derfor kan du ikke stole på websteds overvågningstjenester som W3Techs for at finde ud af, hvilke reverse proxyer der er de mest populære.
Fra vores forskning og erfaring er de mest populære reverse proxyer, der er i brug i dag:
Nginx
Nginx er en open source webserver, der også kan fungere som en reverse proxy. Udover at blive brugt til at være host for websteder, er det også en af de mest udbredte reverse proxy- og load balancing løsninger. Ifølge Netcraft brugte over 479 millioner webservere Nginx i december 2019, hvilket gør den til førende inden for webserver markedsandel.
Nginx giver alle de reverse proxy-fordele, der er diskuteret ovenfor, plus mere. Det forbedrer webydeevne, sikkerhed, pålidelighed og skalerbarhed. Du kan konfigurere Nginx ved hjælp af dens konfigurationsfil, som også kan genindlæses. Hos Kinsta er Nginx reverse proxy en af flere premium add-ons, du kan bruge.
Men du kan også bruge Nginx Plus, et kommercielt tilbud, til at få adgang til API-baserede konfigurationsmuligheder og andre funktioner, der egner sig til store virksomhedswebsteder.
Kinsta driver alle sine websteder med Nginx. Det har rangeret i Review Signals Top Tier webhostingstatus i hver kategori, det har konkurreret i. Nogle andre store virksomheder, der bruger Nginx, er MaxCDN, Cloudflare og Netflix.
Opsætning af Nginx som en grundlæggende reverse proxy er enkel. Nginx giver dig også forskellige direktiver for at tilpasse din servers reverse proxy efter dine krav. Vi vil diskutere, hvordan man gør dette i et senere afsnit. Hvis du er Kinsta-kunde, vil du også lære, hvordan du bruger en reverse proxy til websteder, der hostes hos Kinsta i samme sektion.
Varnish
Varnish er en open source HTTP reverse proxy med en indbygget cache-motor. Det er primært designet til websteder med høj trafik, der serverer dynamisk indhold. Du kan også bruge Varnish som en load balancer, en web-app firewall (WAF) og en edge-godkendelses- og godkendelsesserver.
Det virker på alle moderne versioner af Linux og FreeBSD, og bruges hovedsageligt som en front til Nginx- eller Apache-webservere. Varnishs kraftfulde og yderst fleksible Varnish Configuration Language (VCL) lader dig definere forskellige funktioner såsom håndtering af HTTP-anmodninger, cachelagring og tilslutning til en eller flere webservere.
Af denne grund bruger mange CDN’er Varnish som deres primære grundlag for at levere indhold hurtigt.
Varnish understøtter også Edge Side Includes (ESI), et sprog, der hjælper dig med at genbruge dele af en webside på andre websider. Hvis dit websted bruger meget gentaget indhold på forskellige sider, kan ESI hjælpe dig med at fremskynde dit websteds sideindlæsningstider ved at cache ofte brugte sektioner.
Du kan udvide Varnish med dens forskellige moduler (VMOD’er). Gå til Varnishs officielle vejledning for at lære, hvordan du opsætter Varnish som en reverse proxy til WordPress.
Apache Traffic Server
Apache Traffic Server er en open source caching proxy-server. Det er populært for dets hurtige, skalerbare funktioner. Det var et kommercielt produkt udviklet af Yahoo! længe siden, men de lavede det til open source og donerede det til Apache Foundation til vedligeholdelse.
Adskillige større indholdsnetværk og CDN’er som Comcast, Akamai, LinkedIn, Yahoo og Apple bruger Apache Traffic Server til at drive deres teknologi.
Du kan også bruge Apache HTTP Server (Apache httpd), en HTTP-server-demon, til at opsætte en reverse proxy på din webserver. Udover at fungere som en grundlæggende webserver, hjælper den dig også med at levere statisk og dynamisk indhold til brugerne. Du lærer, hvordan du konfigurerer Apache som en reverse proxy senere i denne artikel.
HAProxy
HAProxy er en open source reverse proxy og load balancer. Den er designet til at integrere med de fleste eksisterende webserverarkitekturer, inklusive Linux-distributioner og cloud-platforme. I lighed med Nginx bruger HAProxy en hændelsesdrevet I/O-model og understøtter opdeling af anmodninger på tværs af flere arbejdsprocesser.
For HTTP-anmodninger klarer HAProxy sig usædvanligt godt selv under tunge belastninger. Nogle af de mest trafikerede websteder på internettet såsom Airbnb, Reddit, Instagram, Stack Overflow, Tumblr, GitHub og Imgur bruger HAProxy til at levere deres websteder effektivt.
At diskutere, hvordan man implementerer HAProxy, ligger uden for denne artikels omfang, men du kan henvise til deres dokumentation for at forstå, hvordan det virker.
Bemærk: Traefik og Envoy er to andre open source-alternativer til HAProxy. De er begge højtydende reverse proxyer og belastningsbalancere med mange avancerede funktioner.
Nogle andre populære reverse proxyer er AWS Elastic Load Balancer, GLBC, DigitalOcean Load Balancer og Google Cloud Load Balancer. For en udtømmende liste over de bedste reverse proxyer og load balancers, der er i brug i dag, kan du tjekke Stackshare.io.
Reverse proxy: Use cases til WordPress-websteder
Der er hovedsageligt tre use cases for at bruge en reverse proxy til WordPress-websteder, herunder websteder hostet hos Kinsta.
Vi bruger kun Nginx til dette eksempel, da det er den mest populære reverse proxy, der bruges til WordPress-websteder i dag. Men de samme grundlæggende principper vil gælde for andre reverse fuldmagter.
Reversee proxyer er ofte udfordrende at installere, konfigurere og understøtte. Af denne grund tilbyder Kinsta et månedligt add-on abonnement på 50 USD for hver reverse proxy, som du har brug for hjælp til at konfigurere. Du kan kontakte Kinstas supportteam for yderligere detaljer.
1. Primært- og proxy-websteder hostet på den samme server
Hvis både det primære websted og proxy-webstedet er hostet på den samme server, kan hovedwebstedet køre på en WordPress-installation, mens en separat WordPress-installation driver proxy-webstedet.
Da du har adgang til både webstederne og deres delte webserver, kan du konfigurere de reverse proxy-regler for hovedwebstedet og derefter konfigurere det proxyied websted til at indlæse fra den reverse proxy.
Hvis du er host for begge disse sider hos Kinsta, kan du kontakte Kinstas supportteam og bede dem om at konfigurere den reverse proxy for dig. Her er den procedure, du skal følge:
- Sørg for, at både hovedsiden og proxysiden er hostet hos Kinsta. Hvis de ikke er det, kan du migrere begge websteder til Kinstas miljø, enten manuelt eller ved at indsende en migreringsanmodning.
- Åbn en supportbillet og giv Kinstas supportteam en klar beskrivelse af domænekonfigurationen. Det tager cirka en hverdag at konfigurere en reverse proxy.
- Kinsta opsætter de relevante reverse proxy-regler på hovedsiden og konfigurerer proxy-stedet til at indlæse over den reverse proxy.
Her er standard Nginx reverse proxy-direktiver, der bruges af Kinsta til at indlæse et underbibliotekswebsted over en reverse proxy:
location ^~ /subfolder/ {
proxy_pass http://subfolder.domain.com;
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;
}
I ovenstående kode skal du erstatte /subfolder/
pladsholderen med det faktiske undermappenavn (f.eks. /blog/
, /shop/
). Derudover skal http://subfolder.domain.com
-underdomænet matche den URL, der bruges til at pege reverse proxy mod proxy-webstedet.
Placeringsdirektivet (location
) inkluderer caret- og tilde-symboler (^~) for at fortælle Nginx, at hvis den finder strengen defineret, skal den stoppe med at søge efter yderligere matches og bruge de direktiver, der er angivet her. Lær mere om Nginx’s reverse proxy-direktiver i dens dokumentation.
Dernæst skal du konfigurere proxy webstedet til at indlæse over den reverse proxy. Her er standardtrinene fulgt af Kinsta for at konfigurere proxy-webstedet:
- Opret en undermappe på stien, hvor proxystedet indlæses fra. Alle proxy-webstedets filer flyttes til denne undermappe.
- Opdater webserverens konfigurationsfiler for at definere den nye undermappe som rodmappen for proxystedet. Derudover skal du tilføje en omskrivningsregel for at fjerne undermappen fra anmodnings-URI for hver indkommende anmodning.
- Opdater alle webadresser i proxywebstedets database, så de matcher webadresserne på livewebstedet (f.eks.
example.com/blog
). - Rediger proxy-webstedets
wp-config.php
-fil med$_SERVER['HTTP_HOST']
-definitionen, og peg den til hovedwebstedets URL. - Hvis du bruger et SSL-certifikat, skal du definere strenge regler i filen
wp-config.php
for at undgå omdirigeringsløkker.
Bemærk: Et proxy-websted kan ikke oprette URL’er, der dublerer den samme undermappe, som det proxy-websted indlæses under. For eksempel kan et proxy-websted på example.com/blog
ikke oprette en side eller en mappe på example.com/blog/blog
.
2. Kun det proxy-websted, der er hostet på din server
Hvis du kun har adgang til det proxy-websted og dets webserver, skal du kontakte serveradministratoren på hovedsiden og bede dem om at opsætte de reverse proxy-regler for dig.
For at gøre det skal du følge de samme trin som beskrevet ovenfor, undtagen i dette tilfælde skal du konfigurere reglerne på to forskellige servere.
For at være vært for dit proxy-websted med Kinsta skal du tilføje et domæne til webstedet, som peger på den reverse proxy. Normalt passer underdomænet til dette formål (f.eks. blog.example.com
) for at indlæse proxywebstedet over et undermappelink (f.eks. example.com/blog
).
Efter at have konfigureret dit proxy-websted på Kinsta, kan du kontakte Kinsta-supportteamet for at konfigurere proxy-webstedet til at indlæse over en reverse proxy. På nuværende tidspunkt vil vores supportteam kræve den rigtige IP på din server for at fuldføre opsætningsprocessen på en måde, der tæller besøg korrekt. Hvis du ikke er i stand til at levere en statisk IP på grund af dynamiske IP-begrænsninger fra visse udbydere (f.eks. AWS CloudFront), vil din plan i stedet blive konverteret til en sammenlignelig båndbreddebaseret plan.
Endelig falder opsætning af den reverse proxy på din server uden for omfanget af Kinsta-support, da kun serveradministratoren kan tage sig af det.
3. Kun det primære websted hostes på din server
Hvis du kun har adgang til hovedwebstedet og dets webserver, skal du konfigurere den reverse proxy og konfigurere dens regler til at indlæse proxy-webstedet fra en ekstern host. Installation og konfiguration af proxystedet til at indlæse over den reverse proxy er den sekundære servers administrators ansvar.
At have dit hovedwebsted hos Kinsta vil give dig adgang til Kinstas supportteam. Du kan rejse en supportbillet hos dem for at tilføje standardreglerne for reverse proxy, der er anført tidligere i denne artikel. Du kan også få tilføjet yderligere tilpasninger til disse regler, hvis det er nødvendigt.
I dette scenarie er du fuldt ud ansvarlig for at konfigurere proxy-webstedet til at indlæse det korrekt over den reverse proxy.
Hvordan konfigureres Nginx som en reverse proxy?
Hvis Kinsta ikke hoster dit websted, og du administrerer dine servere, skal du selv konfigurere den reverse proxy og konfigurere den til at pege mod det proxy-websted.
Afhængigt af din webservers operativsystem kan du installere Nginx anderledes. Til Linux-distributioner kan du bruge forskellige Nginx-pakker baseret på din Linux-distributions version.
I eksemplet nedenfor har vi installeret det primære websted på example.com
-domænenavnet, mens det proxy-websted for WordPress er installeret på blog.domain.com
-underdomænet. De er begge drevet af Apache på en webserver, der kører på Ubuntu 18.04. Vi installerer og konfigurerer Nginx som en reverse proxy på hovedserveren.
1. Installer Nginx
For at begynde skal du få adgang til din servers terminal via SSH. Brug derefter apt-get
-kommandoen til at opdatere din distributions pakkeliste og installere Nginx på din webserver.
sudo apt update
sudo apt install nginx
2. Konfigurer Nginx til proxy-anmodninger
Dernæst skal du konfigurere Nginx til proxy-anmodninger for domæner hostet på Apache. For at gøre det skal du oprette en ny virtuel værtsfil. Her bruger jeg nano-editoren til at tilføje koden, men du kan bruge enhver kode editor efter eget valg.
sudo nano /etc/nginx/sites-available/example.com.conf
Indstil derefter Nginx-direktiver til at videresende anmodninger til Apache ved at tilføje følgende server {...}
og location
blocks:
server {
listen 80;
server_name example.com www.example.com;
index index.php;
root /var/www/example.com/public # fallback for index.php
location / {
try_files $uri $uri/ /index.php?$query_string;
}location /blog {
proxy_pass http://blog.domain.com;proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
# Proxy headers
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 timeouts
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
I koden ovenfor definerer jeg et undermappe example.com/blog
-link, der vil blive serveret af Apache-serveren. Sørg for, at du bruger dit proxy-websteds offentlige IP-adresse (eller URL) i proxy_pass
-direktivet. I mit tilfælde er min proxy-websted hostet på blog.domain.com
-underdomænet.
Bemærk: Sørg for, at proxy-webstedet er installeret og klar til at blive serveret, før du foretager ændringer.
Du kan lære mere om alle de reverse proxy-direktiver, der bruges her i Nginx’s detaljerede indeks over direktiver.
3. Gem den oprettede virtuelle hostsfil
Aktiver derefter den nye virtuelle vært ved at oprette et symbollink til filerne ved navn example.com.conf
i både /etc/nginx/sites-available
og /etc/nginx/sites-enabled
mapper.
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
4. Test Nginx for fejl
Derefter test Nginx for eventuelle konfigurationsfejl.
sudo nginx -t
Hvis der ikke er nogen fejl, genindlæs Nginx for at håndhæve ændringerne.
sudo systemctl reload nginx
Du har med succes konfigureret Nginx til at fungere som en reverse proxy nu. For at bekræfte dette kan du bruge phpinfo()-funktionen til at kontrollere PHP-variablerne, der er indlæst, når du besøger dit proxy-websted.
Under PHP-variablerne SERVER_SOFTWARE
og DOCUMENT_ROOT
vil du se, at Apache betjener dette domæne på backend. Men HTTP_X_REAL_IP
og HTTP_X_FORWARDED_FOR PHP
-variabler bekræfter, at Nginx blev brugt som en reverse proxy til at videresende anmodningerne.
Du kan fremskynde betjeningen af dit WordPress-websted over Nginx ved at bruge modulerne fastcgi_cache og ngx_cache_purge. Mens det første modul vil cache dit websted, vil det andet modul automatisk rense cachen baseret på specifikke begivenheder (f.eks. udgivelse eller redigering af et WordPress-indlæg/-side).
Du kan bruge WordPress-pluginet Nginx Cache Controller til at styre Nginx’ proxyserver-cache direkte fra dit WordPress-admin-dashboard. Hvis du bruger en WordPress Multisite installation, så kan du bruge Nginx Helper plugin til at gøre det samme.
Tjek Nginx’s primære dokumentation og Nginx WordPress opsætningsvejledning for en detaljeret oversigt over, hvordan du arbejder med Nginx og WordPress.
Hvordan konfigureres Apache som en reverse proxy?
Før du begynder, skal du sørge for, at du har to websteder oppe at køre på example.com
og blog.domain.com
. Det første websted kan være et WordPress-websted eller ikke, men det andet bør være et WordPress-websted, da det primært bruges til at indlæse root-domænets blog på example.com/blog
undermappe link.
1. Begynd at konfigurere Apache
Du kan gøre dette ved at åbne din servers terminal via SSH og aktivere Apaches proxy-modul.
sudo a2enmod proxy proxy_http ssl
Kørsel af ovenstående kommando vil højst sandsynligt genstarte Apache for at genindlæse de nyligt definerede direktiver.
2. Opret en reverse proxy
Derefter skal du redigere din hovedservers virtuelle hostfil for at oprette en reverse proxy. Her er koden, du skal tilføje:
<VirtualHost *>
DocumentRoot /var/www/app/public
SSLProxyEngine On ProxyRequests off
ProxyPass /blog http://blog.domain.com
ProxyPassReverse /blog http://blog.domain.com
</VirtualHost>
ProxyPass-direktivet vil oprette en reverse proxy for de angivne stier, mens ProxyPassReverse-direktivet vil opsnappe HTTP-svar-headerne, der sendes gennem denne reverse proxy, og omskrive dem, så de matcher Apache-serveren.
3. Rediger din wp-config.php
fil
Når du har gemt filen, skal du redigere din wp-config.php
-fil ved at tilføje følgende kode lige før linjen, der beder dig om at stoppe med at redigere.
# ProxyPass Settings
# overrides the variables below to ensure that any
# request to /blog/* subdirectory is taken care of properly
$_SERVER['REQUEST_URI'] = '/blog' . $_SERVER['REQUEST_URI'];
$_SERVER['SCRIPT_NAME'] = '/blog' . $_SERVER['SCRIPT_NAME'];
$_SERVER['PHP_SELF'] = '/blog' . $_SERVER['PHP_SELF'];
4. Opdater dit WordPress-websteds database
Endelig skal du opdatere dit WordPress-websteds database for at tilføje konfigurationsværdierne for /blog
-underbibliotekslinket. Du kan gøre det ved at køre følgende SQL-forespørgsel:
UPDATE wp_options SET option_value = 'https://www.example.com/blog' WHERE option_name IN( 'siteurl', 'home' );
Du skulle nu være i stand til at besøge https://www.example.com/blog
URL og få dit WordPress-websted hostet på http://blog.domain.com
underdomæneindlæsning uden at ændre dets URL. Du kan fortsætte med at bruge WordPress som normalt til at gennemse, skrive, redigere og administrere dit websted.
Hvad er begrænsningerne for en reversed proxy?
- En reverse proxy udgør en betydelig sikkerhedsrisiko, da den kan læse og ændre al den trafik, der passerer gennem den. Hvis du sender HTTPS-trafik gennem den reverse proxy, skal den dekryptere og genkryptere de passerende data. Det betyder, at den skal have de private nøgler til SSL/TLS-certifikatet. Så hvis en ondsindet part kan kompromittere din reverse proxy, kan de logge passwords og injicere malware på dine websteder.
- Hvis du eller dine brugere ikke kan få direkte adgang til din hovedserver, kan brug af en reverse proxy føre til et enkelt fejlpunkt. For eksempel, hvis du bruger en reverse proxy som front til at betjene flere domæner, så kan dens udfald føre til, at alle domænerne går offline samtidigt.
- Hvis du er afhængig af en tredjeparts reverse proxy (f.eks. Cloudflare), så videregiver du dit websteds følsomme oplysninger til dem. Mens de er tillid til, kan du ikke forudsige, hvad det kan føre til.
- Gendannelse af backups eller pushing af scene-websites live på websteder, der indlæses over en reverse proxy, kan få det proxyede websted til at stoppe med at indlæse korrekt.
At vælge mellem et CDN og en reverse proxy
CDN’er er en avanceret form for reverse proxy, hvor det meste af konfigurationen og vedligeholdelsen varetages af en tredjepart. De kan give fantastiske ydeevne-fordele til dit WordPress-websted med en mindre indsats fra din side.
CDN’er cacherer ikke kun indhold og leverer det hurtigt til brugerne, men de reducerer også belastningen på dine oprindelsesservere, sænker båndbreddeomkostningerne, giver et ekstra lag af sikkerhed, booster dit websteds SEO og hjælper dig med at skalere dit websted bedre.
Du vil bemærke, at de fleste af fordelene fra CDN’er er de samme som dem, der leveres af reverse fuldmagter. Så skal du vælge et CDN frem for en reverse proxy eller reverse?
Der er ingen grund til, at du skal nøjes med kun én. Hvis du allerede har en reverse proxy installeret, vil du stadig se hastigheds- og ydeevnegevinster ved at bruge et CDN. Begge deres caches ligger godt, og hvis du har nogle unikke behov for håndtering af anmodninger (f.eks. dynamisk indhold, e-handel), så kan du nemt konfigurere det med nogle brugerdefinerede headere videregivet af CDN eller den reverse proxy.
Reverse proxy — ofte stillede spørgsmål
Her er et par mere ofte stillede spørgsmål, der kan hjælpe dig med at forstå alt om en reverse proxy.
Hvad er formålet med en omvendt fuldmagt?
For at maskere placeringen af et eksternt websted, for at få det til at se ud som om det er en del af hoveddomænet. Et universitet kan f.eks. have en elevlogin-sektion, hvor de studerende kan tjekke deres karakterer. I stedet for at hoste det i WordPress, har de sandsynligvis en server placeret på deres campus, der kører noget bedømmelsessoftware. I stedet for at bede eleverne om at gå til https://123.123.123.123/~students/gradeing_software/some/long/url/ kan de blot gøre brug af en reverse proxy, så eleverne kan gå til https://university.edu/grades og det ligner sin del af hovedsiden, når den faktisk er hostet på en anden platform.
Er CDN en reverse proxy?
Nej, et CDN er et content delivery network, der hjælper med at fremskynde de betjenende dele af webstedet fra en placering tættere på den besøgendes placering.
Er en Load Balancer en reverse proxy?
Nej, en load balancer er en måde at hjælpe med at distribuere trafik. For eksempel kan et meget travlt websted have en belastningsbalancer, der distribuerer trafik til flere webservere. Webserverne har alle et spejl af de samme webstedsfiler, men dette gør det muligt for webstedet at håndtere mere trafik end normalt, da load balanceren vil skubbe den indgående trafik ud til hver webserver, så ingen enkelt webserver skal håndtere ALLE indgående trafik på én gang. Så hvis en webserver er sat op til at håndtere 10.000 besøg i minuttet, og du har to webservere bag en load balancer, ville siden i teorien kunne håndtere 20.000 besøg i minuttet.
Er en API-gateway en reverse proxy?
Nej, en API giver simpelthen nogen mulighed for at køre kommandoer på en platform uden behov for at logge ind på en brugergrænseflade for at administrere et websted. Med API’et kunne en kunde sende et nyt blogindlæg til deres WordPress-websted uden at skulle logge ind på WordPress-dashboardet.
Har jeg brug for en reverse proxy?
Dette er et individuelt grundlag. Ikke alle har brug for en reverse proxy, men i tilfældet med universitetet, der er nævnt ovenfor, giver det mening. Dette kan også være af andre årsager som Ford/Chevy/etc., at de måske har en “Byg din bil”-sektion på deres websted, som ikke er en del af hovedsiden, men en eller anden bilbygnings-/tilpasningsplatform, som de ønsker at have som en del af hovedsiden som https://ford.com/buildmycar i stedet for https://carbuildingplatform.com/ford/build/customcar/.
Opsummering
WordPress er meget fleksibelt. Du kan bruge det som en blog, en e-handelsside eller endda et Learning Management System. I de fleste tilfælde kan du tilpasse WordPress, så det passer til dine unikke krav.
Men nogle gange skal du muligvis bruge et separat domæne eller en sekundær server for at være host for et ekstra websted. Som diskuteret tidligere, kan det være på grund af brugen af forskellige teknologistakke til en stor virksomheds-webside eller lancering af en WordPress-blog til et allerede eksisterende ikke-WordPress-websted.
En reverse proxy kan hjælpe i begge disse tilfælde og hjælpe dig med at få mest muligt ud af WordPress uden at opgive hovedwebstedet og starte forfra.
Skriv et svar