Shinyproxy: le proxy inverse nginx ne fonctionne pas

Créé le 15 janv. 2021  ·  7Commentaires  ·  Source: openanalytics/shinyproxy

J'essaie de déployer une application sur Internet via le proxy inverse nginx. Mon application est complètement conteneurisée et mon fichier de configuration nginx dans /etc/nginx/sites-available correspond à l'exemple shinyproxy ici : https://www.shinyproxy.io/security/

serveur {
écouter 80 ;
nom_serveur shinyproxy.votredomaine.com ;
réécrivez ^(.*) https://$server_name$1 permanent ;
}

serveur {
écoutez 443 ;
nom_serveur shinyproxy.votredomaine.com ;
access_log /var/log/nginx/shinyproxy.access.log;
error_log /var/log/nginx/shinyproxy.error.log erreur ;

SSL activé;
protocoles_ssl TLSv1 TLSv1.1 TLSv1.2 ;

certificat_ssl /etc/ssl/certs/votredomaine.com.crt ;
ssl_certificate_key /etc/ssl/private/votredomaine.com.key ;

emplacement / {
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;
 }

}

Mon domaine a une certification https et si je visite mon domaine, je vois le message "Bienvenue sur nginx!" filtrer. Cependant, après avoir lancé mon application pour écouter sur le port 8080 avec la commande :
docker run -d -v /var/run/docker.sock:/var/run/docker.sock --net wind_net -p 8080:8080 wind_container
si je visite mon domaine, je vois toujours le message "Bienvenue sur nginx!" filtrer. Nginx ne transmet pas mon domaine à mon application brillante. Des idées sur pourquoi l'inverse de proxy ne fonctionne pas ? Ai-je lancé mon application brillante conteneurisée sur le mauvais port ?

question

Commentaire le plus utile

J'ai résolu le problème. Nginx n'affichait pas l'application shinyproxy car j'avais négligé de lier mon fichier de configuration nginx dans /etc/nginx/sites-available/ à /etc/nginx/sites-enabled. Après avoir lié ma configuration dans les deux répertoires avec la commande ls -s et supprimé le fichier de configuration par défaut de /etc/nginx/sites-enabled, l'application shinyproxy s'est affichée sur mon domaine.

Tous les 7 commentaires

Votre directive proxy_pass de moteur inverse est acheminée vers le réseau local de la machine hôte (127.0.0.1). Lorsque vous conteneurisez vos applications, vous passez du réseau localhost au réseau de l'écosystème docker. Ainsi, la façon dont vous démarrez et publiez votre shinyproxy pour héberger compte. Consultez cet article sur la mise en réseau dans docker

Merci pour l'aide. Je n'ai toujours pas trouvé de solution après avoir lu l'article et fait un peu plus de dépannage. Dois-je modifier la partie 127.0.0.1 du pass proxy ? Ou dois-je faire tourner mon conteneur Docker pour écouter ailleurs que 8080:8080 ?

Comment démarrez-vous votre shinyproxy ?

Salut @lucius-verus-fan

Juste pour être sûr, avec la commande suivante, vous essayez de démarrer ShinyProxy, n'est-ce pas ?

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

Donc le wind_container est un conteneur client que vous avez créé contenant ShinyProxy ?

Dans ce cas, je ne pense pas que le problème soit lié à la mise en réseau Docker, la partie -p 8080:8080 de la commande garantit que le port 8080 est transmis à votre machine locale, quel que soit le réseau Docker sur lequel le conteneur s'exécute.

Au lieu de cela, je pense que l'erreur se trouve dans votre configuration nginx, vous devez modifier ces lignes pour qu'elles correspondent à votre configuration :

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

Vous devez y spécifier le nom de domaine correct de votre serveur. Maintenant, vous dites à nginx de traiter toute demande sur shinyproxy.yourdomain.com tant que demande à ShinyProxy, toute autre demande entraînera un 404. Ainsi, puisque vous n'y accédez pas sur shinyproxy.yourdomain.com nginx donnera vous un 404.

Bonjour @LEDfan et @jaysnm

La commande que j'utilise pour démarrer ShinyProxy est :
docker run -d -v /var/run/docker.sock:/var/run/docker.sock --net wind_net -p 8080:8080 wind_container

La configuration nginx que j'ai jointe dans mon premier commentaire n'est pas la configuration nginx que j'utilise, c'est l'exemple donné sur le site web shinyproxy. Je vais joindre le fichier de configuration nginx que j'utilise ci-dessous.

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;
     }

}

Lorsque vous visitez le domaine windts.app ou www.windts.app, vous êtes

J'ai résolu le problème. Nginx n'affichait pas l'application shinyproxy car j'avais négligé de lier mon fichier de configuration nginx dans /etc/nginx/sites-available/ à /etc/nginx/sites-enabled. Après avoir lié ma configuration dans les deux répertoires avec la commande ls -s et supprimé le fichier de configuration par défaut de /etc/nginx/sites-enabled, l'application shinyproxy s'est affichée sur mon domaine.

Pour mémoire, il s'agit de ln -s [sic], mais merci d'avoir partagé vos commentaires et bien que votre problème soit résolu !

Cette page vous a été utile?
0 / 5 - 0 notes