Flera tjänster bakom en server med Nginx Proxy Manager
När en och samma server kör fler än ett projekt stöter man förr eller senare på portarna 80 och 443, som bara en process kan lyssna på. En artikel på Habr från Selectels blogg visar steg för steg hur man löser det med Nginx Proxy Manager.
Författaren förklarar först problemet: privilegierade portar, regeln en lyssnare per port, CORS-problem när frontend och backend delas upp på olika portar och avsaknaden av HTTPS. En omvänd proxy löser detta som mellanhand genom att dirigera trafiken efter domän och sökväg. En extra fördel är att brandväggen bara behöver portarna 22, 80 och 443 öppna.
Testmiljön är en VDS med 2 vCPU, 2 GB RAM och 40 GB NVMe, med Ubuntu 24.04 och Docker från det officiella förrådet. Nätverket skapas med docker network create proxy, och containern jc21/nginx-proxy-manager startas med volymer för data och certifikat. Jag gillade att adminpanelen på port 81 bara är bunden till 127.0.0.1 och nås via en SSH-tunnel.
Sedan konfigureras en proxyvärd: i fältet Forward Hostname anges containerns namn, och SSL-certifikatet kopplas på fliken SSL. För testerna används traefik/whoami. Även fallet där applikationen körs direkt på värdmaskinen tas upp: gatewayadressen för Docker-nätverket hämtas med docker network inspect, och brandväggen ställs in så att applikationen inte går att nå förbi proxyn.
Det finns också invändningar. Exemplen blandar olika domäner och avbildningen använder taggen latest, vilket över tid kan försämra reproducerbarheten. Ändå är det en bra startpunkt för den som vill köra flera tjänster hemma eller på en VDS utan att redigera nginx-konfigurationer för hand.
Källa: Habr (Selectels blogg)
Författaren förklarar först problemet: privilegierade portar, regeln en lyssnare per port, CORS-problem när frontend och backend delas upp på olika portar och avsaknaden av HTTPS. En omvänd proxy löser detta som mellanhand genom att dirigera trafiken efter domän och sökväg. En extra fördel är att brandväggen bara behöver portarna 22, 80 och 443 öppna.
Testmiljön är en VDS med 2 vCPU, 2 GB RAM och 40 GB NVMe, med Ubuntu 24.04 och Docker från det officiella förrådet. Nätverket skapas med docker network create proxy, och containern jc21/nginx-proxy-manager startas med volymer för data och certifikat. Jag gillade att adminpanelen på port 81 bara är bunden till 127.0.0.1 och nås via en SSH-tunnel.
Sedan konfigureras en proxyvärd: i fältet Forward Hostname anges containerns namn, och SSL-certifikatet kopplas på fliken SSL. För testerna används traefik/whoami. Även fallet där applikationen körs direkt på värdmaskinen tas upp: gatewayadressen för Docker-nätverket hämtas med docker network inspect, och brandväggen ställs in så att applikationen inte går att nå förbi proxyn.
Det finns också invändningar. Exemplen blandar olika domäner och avbildningen använder taggen latest, vilket över tid kan försämra reproducerbarheten. Ändå är det en bra startpunkt för den som vill köra flera tjänster hemma eller på en VDS utan att redigera nginx-konfigurationer för hand.
Källa: Habr (Selectels blogg)
Kommentarer 0
Skriv den första kommentaren, på vilket språk du vill.
Logga in för att kommentera