Assumption is the mother of all fuck-ups / You're MAdD. Well thank God for that, 'cause if I wasn't this would probably never work
Vraag
Alle reacties
Zelf geen ervaring met NPM, wel met HAProxy. Ja, het is mogelijk om een reverse proxy informatie door te laten zetten naar een andere reverse proxy. Mijn algemene flow ziet er als volgt uit:MAdD schreef op donderdag 17 oktober 2024 @ 15:09:
Mijn vraag
Is het mogelijk om NPM te gebruiken als Reverse proxy achter Reverse proxy?
Op router+firewall: HAProxy, doorzetten via Host header (HTTP) of SNI (HTTPS) naar de juiste backend server.
Backend server: HAProxy voor TLS offloading en doorzetten van TCP/HTTP naar de juiste lokale backend.
Lokale backend: nginx of een andere (web)dienst.
Wat ik zou adviseren is om één reverse proxy te gebruiken aan de voorkant om het verkeer te scheiden tussen je productie- en testomgevingen. Op die manier hoef je niets in te stellen voor je testomgeving in productie en vice versa.
Yar har, wind in your back, lads, wherever you go!
Ja dat kan. Maar ik begrijp wellicht niet zo goed waarom je dat zou willen doen? Of bedoel je dat je eigenlijk ook twee instanties van een reverse proxy zou willen hebben om te testen? Want als je Nginx Proxy Manager hebt dan zou je met een Access List ook eenvoudig de toegang tot *.test.domain.nl kunnen afschermen. Dan hoeft dat niet.
Een andere optie zou kunnen zijn om twee NPM containers in te richten. Beide instanties laat je dan netjes via de DNS challange certificaten ophalen, waarvan de ene op *.domain.nl en de andere op *.test.domain.nl. Intern draai je dan een DNS server zoals Pi-hole of Adguard Home en daar laat je dan op domein niveau routeren naar de juiste reverse proxy. Zo handel ik ook al mijn internet verkeer af:
Een andere optie zou kunnen zijn om twee NPM containers in te richten. Beide instanties laat je dan netjes via de DNS challange certificaten ophalen, waarvan de ene op *.domain.nl en de andere op *.test.domain.nl. Intern draai je dan een DNS server zoals Pi-hole of Adguard Home en daar laat je dan op domein niveau routeren naar de juiste reverse proxy. Zo handel ik ook al mijn internet verkeer af:
||example.nl^$dnsrewrite=192.168.1.5 ||test.example.nl^$dnsrewrite=192.168.1.15
De suggestie van @The Zep Man is ook een hele goede. Met HAProxy is dat prima te doen. Maar dan moet je dus wel HAProxy opzetten en beheren.
Wat ik voorstel kan waarschijnlijk ook met NPM. Je hebt dan wel drie instanties: de front office (NPM via internet bereikbaar) en twee back offices (productie- en testomgeving). Je hebt dan een extra instantie, maar houdt wel zo beter het overzicht. Ook heeft zo bijvoorbeeld een herstart van productie geen invloed op de beschikbaarheid van test of vice versa (net hoe je het inricht).alex3305 schreef op donderdag 17 oktober 2024 @ 15:18:
De suggestie van @The Zep Man is ook een hele goede. Met HAProxy is dat prima te doen. Maar dan moet je dus wel HAProxy opzetten en beheren.
Tussen reverse proxies onderling kan je het client IP door laten sturen en behouden in bijvoorbeeld logs via het proxy protocol. Dit wordt ondersteund door HAProxy en nginx. Zo zit je niet voor elke client die een verbinding maakt tegen het IP-adres van een andere reverse proxy aan te kijken.
[ Voor 24% gewijzigd door The Zep Man op 17-10-2024 15:28 ]
Yar har, wind in your back, lads, wherever you go!
Daar heb ik een tijdje geleden ook even mee gespeeld en vond dat meer werk dan het waard was. Je zou dan met redirects moeten gaan werken, want met TLS termination werd dat, uiteraard, een drama.The Zep Man schreef op donderdag 17 oktober 2024 @ 15:22:
Wat ik voorstel kan waarschijnlijk ook met NPM.
En Proxy Protocol zit niet standaard in NPM. Er is wel een PR van twee jaar oud. Dus dan zou de TS nog aan de slag moeten met custom configuratie. Custom configuratie heb ik ook een tijdje gebruikt, maar ik vond dat toch allemaal wat omslachtig.Tussen reverse proxies onderling kan je het client IP door laten sturen en behouden in bijvoorbeeld logs via het proxy protocol. Dit wordt ondersteund door HAProxy en nginx. Zo zit je niet voor elke client die een verbinding maakt tegen het IP-adres van een andere reverse proxy aan te kijken.
Da's onhandig, en een reden waarom ik fan ben van HAProxy. L4 en L7 proxying, TLS sessies doorzetten zonder decryptie, niet-HTTP-sessies in TLS sessies filteren, ...alex3305 schreef op donderdag 17 oktober 2024 @ 16:18:
Daar heb ik een tijdje geleden ook even mee gespeeld en vond dat meer werk dan het waard was. Je zou dan met redirects moeten gaan werken, want met TLS termination werd dat, uiteraard, een drama.
Ik wist niet dat dat ontbrak. Dan lijkt NPM geen goede optie voor een gezamenlijke frontend voor @MAdD tenzij veel aspecten worden aangepast (centraal TLS offloading, etc.).En Proxy Protocol zit niet standaard in NPM. Er is wel een PR van twee jaar oud. Dus dan zou de TS nog aan de slag moeten met custom configuratie. Custom configuratie heb ik ook een tijdje gebruikt, maar ik vond dat toch allemaal wat omslachtig.
Yar har, wind in your back, lads, wherever you go!
De reden dat ik NPM gebruik is de gui.... ben niet zo van de code kloppen in files....
wat ik dus wil is het volgende:
Er zijn dus 2 Linux machines beide met docker en NPM (1 voor productie en 1 voor test)
in ieder geval bedankt voor de antwoorden.. zal verder kijken wat ik kan doen/vinden
wat ik dus wil is het volgende:
code:
1
2
| internet => al het verkeer komt binnen op de "productie" NPM ==> Stuurt *.testdomain doornaar naar de test NPM
==> Stuur productie naar de juiste server(s) |
Er zijn dus 2 Linux machines beide met docker en NPM (1 voor productie en 1 voor test)
in ieder geval bedankt voor de antwoorden.. zal verder kijken wat ik kan doen/vinden
Assumption is the mother of all fuck-ups / You're MAdD. Well thank God for that, 'cause if I wasn't this would probably never work
Pagina: 1