¿Cómo configurar un proxy inverso usando nginx?

¿Cómo configurar un proxy inverso usando nginx?

Estoy intentando obtener nombres de host para mis contenedores acoplables yya que solo puedo usar un proxy inversoPara eso, estoy tratando de lograr exactamente eso con la ayuda de nginx.

Un contenedor acoplable es un servicio web que expone el puerto 8080 a my localhost.

Entonces puedo acceder al servidor web a través de:

http://localhost:8080

En lugar de eso prefiero usar:

http://webservice.local

Por eso agregué a mi/etc/hosts

127.0.0.1 webservice.local

Luego instalé nginx y agregué a /etc/nginx/sites-available/default:

server {
     listen 80 default_server;
     listen [::]:80 default_server ipv6only=on;

     root /usr/share/nginx/html;
     index index.html index.htm;

     # Make site accessible from http://localhost/
     server_name localhost;

     location / {
             # First attempt to serve request as file, then
             # as directory, then fall back to displaying a 404.
             try_files $uri $uri/ =404;
             # Uncomment to enable naxsi on this location
             # include /etc/nginx/naxsi.rules
     }


     location webservice.local {
         proxy_pass http://localhost:8080
     }

Después de recargar nginx, aparece el siguiente error ERR_CONNECTION_REFUSEDal intentar abrir http://webservice.localen mi navegador.

¿Qué hice mal? ¿Cómo puedo configurar correctamente el proxy inverso?

Respuesta1

No estoy seguro de que esta sea la sintaxis correcta. Prueba algo como eso:

upstream myupstream {
    server 127.0.0.1:8080 fail_timeout=2s;
    keepalive 32;
}

location / {
     proxy_pass http://myupstream;
     proxy_redirect http://myupstream/ /;
}

algo parecido a esto..

Pero si sólo desea redirigir el puerto 8080 al 80, ¿por qué no utilizar una utilidad de red como socat?

Luego, debe agregar hosts virtuales en nginx para cada flujo ascendente y agregar esos hosts virtuales en DNS o /etc/hosts, que se resolverán en localhost.

O simplemente puedes evitar el upstream y usar hosts virtuales de esta manera:

server {
  listen 80;
  server_name myvirtualhost1.local;
  location / {
    proxy_pass http://127.0.0.1:8080;
}

server {
  listen 80;
  server_name myvirtualhost2.local;
  location / {
    proxy_pass http://127.0.0.1:9090;
}

información relacionada