Il mio titolo non è il migliore, la mia conoscenza del webstuff è piuttosto semplice, mi spiace.Il server dietro il proxy inverso di nginx ignora il percorso relativo nell'URL
Quello che voglio raggiungere
Ho una scatola fanbox esecuzione nginx su Archlinux che uso come punto di ingresso principale alla mia LAN domestica da Internet (vale a dire lavorare dove posso solo uscire alla porta 80 e 443) tramite la funzione di proxy inverso utilizzando un nome di dominio mutevole su cui non ho alcun controllo e che chiameremo per ora home.net.
fanbox ha le porte 80 e 443 mappati a home.net, quella parte era facile.
Ho 2 server web dietro il firewall, web1.lan, web2.lan, web2ilo.lan. Entrambi questi hanno diverse applicazioni (che può avere lo stesso nome su macchine diverse) che possono direttamente accedere sulla LAN tramite URL standard (i nomi sono dati come esempi, non ho alcun controllo sul contenuto):
http://web1.lan/phpAdmin/
http://web1.lan/gallery/
http://web2.lan/phpAdmin/
http://web2.lan/dlna/
... e così via ...
Ora web2ilo.lan è un caso particolare. È l'interfaccia web di gestione fuori banda del server HP web2.lan. Quel particolare server web offre solo 1 applicazione, in modo che possa essere accessibile solo tramite il suo URL radice:
http://web2ilo/login.html
Il mio obiettivo è quello di questi sono disponibili sottotracciato di home.net come questo:
http://home.net/web1/phpAdmin/
http://home.net/web1/gallery/
http://home.net/web2/phpAdmin/
http://home.net/web2/dlna/
http://home.net/web2ilo/login.html
il mio problema
che quasi funziona, ma le applicazioni web tendono a riscrivere gli URL in modo che dopo accedo a rispettivamente:
http://home.net/web1/phpAdmin/login.php
http://home.net/web2ilo/login.html
il browser viene reindirizzato rispettivamente
http://home.net/phpAdmin/index.php
http://home.net/index.html
Nota che i sottotracciati relativi web1 e web2ilo sono andati, che logicamente mi danno un 404.
mio config
Così lontano, ho cercato molto e ho provato molte opzioni in nginx senza capire troppo quello che stavo facendo. Ecco la mia configurazione che riproduce questo problema. Ho lasciato SSL per chiarezza.
server {
listen 443 ssl;
server_name localhost;
# SSL stuff left out for clarity
location/{
root /usr/share/nginx/html;
index index.html index.htm;
}
location /web1/ {
proxy_set_header Host $host;
proxy_redirect off;
proxy_pass https://web1.lan/;
}
location /web2/ {
proxy_set_header Host $host;
proxy_redirect off;
proxy_pass https://web2.lan/;
}
location /web2ilo/ {
proxy_set_header Host $host;
proxy_redirect off;
proxy_pass https://web2ilo.lan/;
}
}
Dopo le prime risposte
Dopo il primo paio di risposte (grazie!), Mi rendo conto che la mia messa a punto è tutt'altro che comune e che io possa essere in direzione di guai da solo.
Quale sarebbe quindi un'idea migliore per accedere al server Web dietro il firewall senza toccare le porte di frontend e il dominio/nome host?
È esplicitamente disable url rewriting con 'proxy_redirect off' e si aspettano di lavorare. Divertente. –
Ho seguito degli esempi che ho trovato su google ... Ho provato diversi parametri per questa opzione ma non riesco a notare alcuna differenza. Quindi immagino che tutto il mio approccio sia totalmente sbagliato. Non divertente no. – FLBzh