Reverse proxy achter Reverse proxy

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • MAdD
  • Registratie: Juni 2006
  • Laatst online: 06-06 15:41
Mijn vraag
Is het mogelijk om NPM te gebruiken als Reverse proxy achter Reverse proxy?

Ik heb helaas maar 1 externe IP adres, en ik wil het volgende bereiken

*.MAdD-domain.nl gaat naar mijn "productie" website.
*.test.MAdD-domain.nl wil ik laten routeren naar mijn "test" omgeving.

Zodat ik zaken kan testen, voordat ik het live zet.
Uiteraard zal *.test.MAdD-domain.nl alleen via RFC1918 bereikbaar zijn.


Relevante software en hardware die ik gebruik
  • Docker / Portainer
  • NPM
  • Linux host (ubuntu LTS 2024)
Voor zowel de productie als de test omgeving

Wat ik al gevonden of geprobeerd heb

Wat ik tot op heden ook probeer in NPM, als ik de website.test.MAdD-domain.nl open krijg ik een foutmelding vanuit Apache (alleen ik ben er nog niet achter welke van de 2 dat is).

Ik zoek een voorbeeld, waarmee ik verder kan stoeien om het werkend te krijgen.

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

Alle reacties


Acties:
  • 0 Henk 'm!

  • The Zep Man
  • Registratie: Oktober 2003
  • Laatst online: 08-06 12:50

The Zep Man

🏴‍☠️

MAdD schreef op donderdag 17 oktober 2024 @ 15:09:
Mijn vraag
Is het mogelijk om NPM te gebruiken als Reverse proxy achter Reverse proxy?
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:

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!


Acties:
  • +1 Henk 'm!

  • alex3305
  • Registratie: Januari 2004
  • Laatst online: 06-06 17:26
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:

||example.nl^$dnsrewrite=192.168.1.5
||test.example.nl^$dnsrewrite=192.168.1.15

Acties:
  • 0 Henk 'm!

  • alex3305
  • Registratie: Januari 2004
  • Laatst online: 06-06 17:26
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.

Acties:
  • 0 Henk 'm!

  • The Zep Man
  • Registratie: Oktober 2003
  • Laatst online: 08-06 12:50

The Zep Man

🏴‍☠️

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.
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).

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!


Acties:
  • +1 Henk 'm!

  • alex3305
  • Registratie: Januari 2004
  • Laatst online: 06-06 17:26
The Zep Man schreef op donderdag 17 oktober 2024 @ 15:22:
Wat ik voorstel kan waarschijnlijk ook met NPM.
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.
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. :+
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.

Acties:
  • +1 Henk 'm!

  • The Zep Man
  • Registratie: Oktober 2003
  • Laatst online: 08-06 12:50

The Zep Man

🏴‍☠️

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.
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, ...
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.
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.).

Yar har, wind in your back, lads, wherever you go!


Acties:
  • 0 Henk 'm!

  • MAdD
  • Registratie: Juni 2006
  • Laatst online: 06-06 15:41
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:

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