Shinyproxy: Nginx-Reverse-Proxy funktioniert nicht

Erstellt am 15. Jan. 2021  ·  7Kommentare  ·  Quelle: openanalytics/shinyproxy

Ich versuche, eine App über den Nginx-Reverse-Proxy im Internet bereitzustellen. Meine App ist vollständig containerisiert und meine nginx-Konfigurationsdatei in /etc/nginx/sites-available entspricht dem Shinyproxy-Beispiel hier: https://www.shinyproxy.io/security/

Server {
hören 80;
Servername Shinyproxy.IhreDomain.com;
^(.*) https://$server_name$1 permanent umschreiben;
}

Server {
höre 443;
Servername Shinyproxy.IhreDomain.com;
access_log /var/log/nginx/shinyproxy.access.log;
error_log /var/log/nginx/shinyproxy.error.log Fehler;

ssl an;
SSL-Protokolle TLSv1 TLSv1.1 TLSv1.2;

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

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

}

Meine Domain hat eine https-Zertifizierung und wenn ich meine Domain besuche, sehe ich "Willkommen bei nginx!" Bildschirm. Nachdem ich jedoch meine App gestartet habe, um Port 8080 mit dem Befehl abzuhören:
docker run -d -v /var/run/docker.sock:/var/run/docker.sock --net wind_net -p 8080:8080 wind_container
Wenn ich meine Domain besuche, sehe ich immer noch "Welcome to nginx!" Bildschirm. Nginx leitet meine Domain nicht an meine glänzende Anwendung weiter. Irgendwelche Ideen, warum die Proxy-Umkehrung nicht funktioniert? Habe ich meine containerisierte Shiny-App am falschen Port gestartet?

question

Hilfreichster Kommentar

Ich habe das Problem gelöst. Nginx zeigte die Shinyproxy-App nicht an, weil ich es versäumt hatte, meine Nginx-Konfigurationsdatei in /etc/nginx/sites-available/ mit /etc/nginx/sites-enabled zu verknüpfen. Nachdem ich meine Konfiguration in beiden Verzeichnissen mit dem Befehl ls -s verknüpft und die Standardkonfigurationsdatei aus /etc/nginx/sites-enabled entfernt hatte, wurde die Shinyproxy-App in meiner Domain angezeigt.

Alle 7 Kommentare

Ihre Anweisung proxy_pass der Reverse-Engine leitet das lokale Netzwerk des Hostcomputers (127.0.0.1) weiter. Wenn Sie Ihre Anwendungen containerisieren, wechseln Sie vom Localhost-Netzwerk zum Docker-Ökosystem-Netzwerk. Daher ist es wichtig, wie Sie Ihren Shinyproxy zum Hosten starten und veröffentlichen. Lesen Sie diesen Artikel über die Vernetzung in Docker

Danke für die Hilfe. Ich habe immer noch keine Lösung gefunden, nachdem ich den Artikel gelesen und weitere Fehlerbehebungen durchgeführt habe. Muss ich den Teil 127.0.0.1 des Proxy-Passes ändern? Oder muss ich meinen Docker-Container hochfahren, um irgendwo anders als 8080:8080 zu hören?

Wie startest du deinen Shinyproxy?

Hallo @lucius-verus-fan

Nur um sicher zu gehen, mit dem folgenden Befehl versuchen Sie, ShinyProxy zu starten, oder?

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

Das wind_container ist also ein Kundencontainer, den Sie erstellt haben, der ShinyProxy enthält?

In diesem Fall glaube ich nicht, dass das Problem mit dem Docker-Netzwerk zu tun hat, der Teil -p 8080:8080 des Befehls sorgt dafür, dass Port 8080 an Ihren lokalen Computer weitergeleitet wird, unabhängig davon, in welchem ​​Docker-Netzwerk der Container läuft.

Stattdessen glaube ich, dass der Fehler in Ihrer nginx-Konfiguration liegt. Sie müssen diese Zeilen an Ihr Setup anpassen:

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

Dort müssen Sie den korrekten Domänennamen Ihres Servers angeben. Jetzt weisen Sie nginx an, jede Anfrage auf shinyproxy.yourdomain.com als Anfrage an ShinyProxy zu bearbeiten, jede andere Anfrage führt zu einem 404. Da Sie also nicht über shinyproxy.yourdomain.com zugreifen, wird nginx geben du ein 404.

Hallo @LEDfan und @jaysnm

Der Befehl, den ich zum Starten von ShinyProxy verwende, lautet:
docker run -d -v /var/run/docker.sock:/var/run/docker.sock --net wind_net -p 8080:8080 wind_container

Die nginx-Konfiguration, die ich in meinem ersten Kommentar angehängt habe, ist nicht die nginx-Konfiguration, die ich verwende, das ist das Beispiel auf der Shinyproxy-Website. Ich werde die nginx-Konfigurationsdatei anhängen, die ich unten verwende.

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

}

Beim Besuch der Domain windts.app oder www.windts.app werden Sie zur Nginx-Willkommensseite weitergeleitet, anstatt zur Shinyproxy-App weitergeleitet zu werden. Die App läuft sowohl lokal als auch auf einem Remote-Server ordnungsgemäß. Sie müssen lediglich die Domain mit dem Container verbinden, auf dem die Shinyproxy-App ausgeführt wird.

Ich habe das Problem gelöst. Nginx zeigte die Shinyproxy-App nicht an, weil ich es versäumt hatte, meine Nginx-Konfigurationsdatei in /etc/nginx/sites-available/ mit /etc/nginx/sites-enabled zu verknüpfen. Nachdem ich meine Konfiguration in beiden Verzeichnissen mit dem Befehl ls -s verknüpft und die Standardkonfigurationsdatei aus /etc/nginx/sites-enabled entfernt hatte, wurde die Shinyproxy-App in meiner Domain angezeigt.

Für das Protokoll ist es ln -s [sic], aber danke für das Teilen des Feedbacks und gut, dass Ihr Problem gelöst ist!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

jat255 picture jat255  ·  4Kommentare

donarus picture donarus  ·  3Kommentare

fmmattioni picture fmmattioni  ·  3Kommentare

lucius-verus-fan picture lucius-verus-fan  ·  8Kommentare

jat255 picture jat255  ·  3Kommentare