implementare il proxy inverso con i contenitori di nginx e docker con differenti porte

ho tre contenitori docker su porte diverse e vorrei implementare il proxy inverso con nginx ad ognuno dei contenitori in modo da poter navigare a ciascuno dei contenitori passando una parola chiave invece di porte. Come invece di http://localhost:3000 voglio passare come http://localhost/app1

Ho creato l'image nginx con il file dockerfile.

 FROM nginx:alpine COPY nginx.conf /etc/nginx/nginx.conf COPY index.html usr/share/nginx/html 

e il mio file conf file nginx sembra

 worker_processes 1; 

events {worker_connections 1024; }

http {

 sendfile on; upstream app1 { server localhost:3000; } upstream app2 { server localhost:3001; } server { listen 3000; location /app1 { proxy_pass http://localhost:3000; proxy_redirect off; 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-Host $server_name; } } server { listen 3001; location /app2 { proxy_pass http://localhost:3001; proxy_redirect off; 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-Host $server_name; } } 

}

ma dopo aver creato il contenitore nginx dall'image. Vedo il contenitore creato. ma quando ho cercato di accedere con localhost è scaduto in modo nginx non è in esecuzione o mi ha mancato qualcosa. Non riesco a caricare il contenitore con localhost / app1 o app2 o addirittura localhost non funziona. Aiuto richiesto. Grazie in anticipo.

Stai esponendo le porte 80 e 443 quando si avvia il contenitore, ma non ti vedo l'ascolto di quelle porte nella configuration nginx.

Prova a sostituire l' listen 3000 con l' listen 80 e prova ad accedere a localhost/app1

Posso anche vedere che stai utilizzando – --link quando si avvia il tuo contenitore docker. Quindi penso che dovresti usare app1 e app2 invece che localhost . Per favore, fate sapere se c'è qualcosa che ho perso, quindi non è così. È inoltre necessario accertarsi che le applicazioni siano accessibili su queste porte (3000 e 3001).

Anche le tue 2 posizioni dovrebbero essere nello stesso block di server:

 server { listen 80; location /app1 { proxy_pass http://app1:3000; proxy_redirect off; 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-Host $server_name; } location /app2 { proxy_pass http://app2:3001; proxy_redirect off; 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-Host $server_name; } }