Shinyproxy: El proxy inverso nginx no funciona

Creado en 15 ene. 2021  ·  7Comentarios  ·  Fuente: openanalytics/shinyproxy

Estoy intentando implementar una aplicación en Internet a través del proxy inverso nginx. Mi aplicación está completamente en contenedores y mi archivo de configuración nginx en / etc / nginx / sites-available coincide con el ejemplo de shinyproxy aquí: https://www.shinyproxy.io/security/

servidor {
escucha 80;
server_name shinyproxy.yourdomain.com;
reescribir ^ (. *) https: // $ nombre_servidor $ 1 permanente;
}

servidor {
escuchar 443;
server_name shinyproxy.yourdomain.com;
access_log /var/log/nginx/shinyproxy.access.log;
error_log /var/log/nginx/shinyproxy.error.log error;

ssl encendido;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_certificate /etc/ssl/certs/yourdomain.com.crt;
ssl_certificate_key /etc/ssl/private/yourdomain.com.key;

localización / {
proxy_pass http://127.0.0.1 : 8080 /;

   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
   proxy_read_timeout 600s;

   proxy_redirect    off;
   proxy_set_header  Host             $http_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-Proto $scheme;
 }

}

Mi dominio tiene certificación https y si visito mi dominio veo el mensaje "¡Bienvenido a nginx!" pantalla. Sin embargo, después de iniciar mi aplicación para escuchar en el puerto 8080 con el comando:
docker run -d -v /var/run/docker.sock:/var/run/docker.sock --net wind_net -p 8080:8080 wind_container
si visito mi dominio, todavía veo el mensaje "¡Bienvenido a nginx!" pantalla. Nginx no está transfiriendo mi dominio a mi aplicación brillante. ¿Alguna idea sobre por qué el proxy inverso no funciona? ¿Lancé mi aplicación brillante en contenedor en el puerto incorrecto?

question

Comentario más útil

He resuelto el problema. Nginx no mostraba la aplicación shinyproxy porque me había olvidado de vincular mi archivo de configuración nginx en / etc / nginx / sites-available / a / etc / nginx / sites-enabled. Después de vincular mi configuración en ambos directorios con el comando ls -s y eliminar el archivo de configuración predeterminado de / etc / nginx / sites-enabled, la aplicación shinyproxy se mostró en mi dominio.

Todos 7 comentarios

Su directiva proxy_pass de motor inverso se está enrutando a la red local de la máquina host (127.0.0.1). Cuando coloca sus aplicaciones en contenedores, está pasando de una red de host local a una red de ecosistema de Docker. Por lo tanto, es importante cómo inicie y publique su shinyproxy en el host. Consulte este artículo sobre redes en la ventana acoplable

Gracias por la ayuda. Todavía no he encontrado una solución después de leer el artículo y resolver más problemas. ¿Necesito cambiar la parte 127.0.0.1 del pase de proxy? ¿O necesito hacer girar mi contenedor docker para escuchar en otro lugar que no sea 8080: 8080?

¿Cómo empiezas tu shinyproxy?

Hola @ lucius-verus-fan

Solo para estar seguro, con el siguiente comando está intentando iniciar ShinyProxy, ¿verdad?

 docker run -d -v /var/run/docker.sock:/var/run/docker.sock --net wind_net -p 8080:8080 wind_container

Entonces, ¿ wind_container es un contenedor de cliente que creó con ShinyProxy?

En ese caso, no creo que el problema tenga que ver con la red Docker, la parte -p 8080:8080 del comando asegura que el puerto 8080 se reenvíe a su máquina local, independientemente de en qué red Docker se esté ejecutando el contenedor.

En cambio, creo que el error está en su configuración de nginx, debe cambiar estas líneas para que coincidan con su configuración:

server_name shinyproxy.yourdomain.com;
rewrite ^(.*) https://$server_name$1 permanent;
# a few lines lower
server_name shinyproxy.yourdomain.com;

Debe especificar el nombre de dominio correcto de su servidor allí. Ahora le está diciendo a nginx que procese cualquier solicitud en shinyproxy.yourdomain.com como una solicitud a ShinyProxy, cualquier otra solicitud resultará en un 404. Por lo tanto, dado que no accede a ella por encima de shinyproxy.yourdomain.com nginx dará eres un 404.

Hola @LEDfan y @jaysnm

El comando que estoy usando para iniciar ShinyProxy es:
docker run -d -v /var/run/docker.sock:/var/run/docker.sock --net wind_net -p 8080:8080 wind_container

La configuración de nginx que adjunté en mi primer comentario no es la configuración de nginx que estoy usando, ese es el ejemplo que se da en el sitio web shinyproxy. Adjuntaré el archivo de configuración de nginx que estoy usando a continuación.

server {
  listen                80;
  server_name           windts.app www.windts.app;
  rewrite     ^(.*)     https://$server_name$1 permanent;
}

server {
  listen                443 ssl;
  server_name           windts.app www.windts.app;
  access_log            /var/log/nginx/shinyproxy.access.log;
  error_log             /var/log/nginx/shinyproxy.error.log error;

  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

  ssl_certificate       /etc/ssl/certs/windts.app.crt;
  ssl_certificate_key   /etc/ssl/private/windts.app.key;

   location / {
       proxy_pass          http://127.0.0.1:8080/;

       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
       proxy_read_timeout 600s;

       proxy_redirect    off;
       proxy_set_header  Host             $http_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-Proto $scheme;
     }

}

Al visitar el dominio windts.app o www.windts.app , se le envía a la página de bienvenida de Nginx en lugar de pasar a la aplicación shinyproxy. La aplicación se ejecuta correctamente tanto a nivel local como en un servidor remoto. Es simplemente una cuestión de conectar el dominio al contenedor que ejecuta la aplicación shinyproxy.

He resuelto el problema. Nginx no mostraba la aplicación shinyproxy porque me había olvidado de vincular mi archivo de configuración nginx en / etc / nginx / sites-available / a / etc / nginx / sites-enabled. Después de vincular mi configuración en ambos directorios con el comando ls -s y eliminar el archivo de configuración predeterminado de / etc / nginx / sites-enabled, la aplicación shinyproxy se mostró en mi dominio.

Para el registro, es ln -s [sic], pero gracias por compartir los comentarios y es bueno que tu problema esté resuelto.

¿Fue útil esta página
0 / 5 - 0 calificaciones