Ankündigung

Einklappen
Keine Ankündigung bisher.

Zugriff auf Edomi via Reverse Proxy

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [Codebeispiel] Zugriff auf Edomi via Reverse Proxy

    Guten Morgen Zusammen,
    ich versuche im Moment von Extern auf Edomi via Reverse Proxy zuzugreifen. Leider komme ich hier nicht weiter.
    Ausgangslage ist folgende:
    Raspberyy Pi 3 mit NGINX als Reverse Proxy konfiguriert:
    2018-08-13_09-31-47.png
    Leider funktioniert das so nicht .-(
    Kann mir jemand sagen wo das Problem liegt?
    Wenn ich zum Beispiel auf meine Kamera zugreife funktioniert das ganze...

    Viele Grüsse
    Eric
    Zuletzt geändert von eric4980; 13.08.2018, 08:47.

    #2
    Meine Konfiguration sieht so aus:

    HTML-Code:
    upstream edomi {
        server 10.0.10.xx;
    }
    upstream edomi_websocket {
        server 10.0.10.xx:8080;
    }
    
    server {
        listen 10.0.10.xx:80;
        listen 10.0.10.xx:443 ssl http2;
        server_name edomi.domain.tld;
        location / {
              proxy_pass http://edomi;
        }
        include /etc/nginx/ssl-settings.conf; #Certbot SSL File
    }
    
    map $http_upgrade $connection_upgrade {
        default upgrade;
            '' close;
    }
    
    server {
        listen 10.0.10.xx:8080 ssl http2;
        location / {
                proxy_pass http://edomi_websocket;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $connection_upgrade;
        }
        include /etc/nginx/ssl-settings.conf;
    }

    Kommentar


      #3
      Hier meine ganze config:
      Code:
      server {
          server_tokens off;
      
          ## Blocken, wenn Zugriff aus einem nicht erlaubten Land erfolgt ##
          if ($allowed_country = no) {
              return 403;
          }
      
          # https://www.cyberciti.biz/tips/linux-unix-bsd-nginx-webserver-security.html
          ## Block download agents ##
          if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
              return 403;
          }
      
          ## Block some robots ##
          if ($http_user_agent ~* msnbot|scrapbot) {
              return 403;
          }
      
          ## Deny certain Referers ##
          if ( $http_referer ~* (babes|forsale|girl|jewelry|love|nudit|organic|poker|porn|sex|teen) )
          {
              return 403;
          }
      
          listen 3443 ssl default_server;
          server_name my.domain.de;
      
          ##
          # SSL
          ##
      
          ## Activate SSL, setze SERVER Zertifikat Informationen ##
          # Generiert via Let's Encrypt!
          ssl on;
          ssl_certificate /etc/letsencrypt/live/my.domain.de/fullchain.pem;
          ssl_certificate_key /etc/letsencrypt/live/my.domain.de/privkey.pem;
          ssl_session_cache builtin:1000 shared:SSL:10m;
          ssl_prefer_server_ciphers on;
          # unsichere SSL Ciphers deaktivieren!
          ssl_ciphers    HIGH:!aNULL:!eNULL:!LOW:!3DES:!MD5:!RC4;
      
          ##
          # HSTS
          ##
      
          add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
      
          ##
          # global
          ##
      
          root /var/www/my.domain.de;
          index index.php index.htm index.html;
      
      # Weiterleitung zu Edomi (Websocket Schnittstelle)
          # Nur Verbindungen gegen "/" durchlassen! Also weder auf Dateien noch Verzeichnisse (= nur Websocket Connects)
          location = / {
            proxy_pass http://192.168.1.48:8080;
          }
      
          # Edomi Weiterleitung
          location / {
            proxy_pass http://192.168.1.48/visu/;
          }

      Kommentar


        #4
        Was genau funktioniert denn nicht? Die Definition der Websocket-Location sieht merkwürdig aus, weil Edomi diese eigentlich auf einem anderen Port erwartet. Ich weiß ehrlich gesagt nicht, ob das funktionieren würde, wenn Du den in der Edomi-Config auch auf 80 ändern würdest.

        Kommentar


          #5
          Ich bekomme keine Verbindung zu Edomi. Es wird der HTML Fehler 502 ausgegeben...

          Kommentar


            #6
            Zitat von s01iD Beitrag anzeigen
            Die Definition der Websocket-Location sieht merkwürdig aus, weil Edomi diese eigentlich auf einem anderen Port erwartet.
            Wieso? Bei Edomi ist doch der Websocket-Port per default auf 8080 eingestellt...

            Ist hier keiner der sich mit der Konfiguration von NGINX als Reverse Proxy auskennt?

            Viele Grüsse
            Eric

            Kommentar


              #7
              Warum probierst Du nicht einfach meine Config von oben? Die funktioniert nachweislich ;-)

              Kommentar


                #8
                Das würde ich schon mal probieren, jedoch verstehe ich die config nicht mal ansatzweise da sie ja grundlegend anders aufgebaut ist wie meine...
                Das wäre ja die Grundvorraussetzung um deine Config an meine Umgebung anzupassen...

                Was steht den in deiner ssl-settings.conf?

                Kommentar


                  #9
                  Die ssl-settings.conf wird bei mir von Certbot für Let's Encrypt erzeugt.
                  Ich versuche die Config mal zu erklären...

                  Code:
                   
                   upstream edomi {     server 10.0.10.xx; } upstream edomi_websocket {     server 10.0.10.xx:8080; }
                  Hier habe ich als "upstream" den Edomi-Server definiert und zusätzlich noch den Websocket-Port (den ich anderweitig definiert habe).
                  upstreams brauchst Du nicht zwingend, wenn es nur einen Server gibt, da könntest Du noch weitere Server für LB/HA definieren. Habe ich aus der Historie bei anderen Projekten so definiert.

                  Code:
                  server { 
                       listen 10.0.10.xx:80;     listen 10.0.10.xx:443 ssl http2;     server_name edomi.domain.tld;     location / {           proxy_pass http://edomi;     }     include /etc/nginx/ssl-settings.conf; #Certbot SSL File }
                  Hier sind die IPs definiert auf denen NGINX hören soll für den Edomi-Server. Die könntest Du auch einfach ohne IP nur mit dem Port definieren.
                  Location leitet direkt auf den Upstream "edomi" weiter. Ich wollte das nicht auf das visu-Unterverzeichnis fixieren.

                  Code:
                  server { 
                       listen 10.0.10.xx:8080 ssl http2;     location / {             proxy_pass http://edomi_websocket;             proxy_http_version 1.1;             proxy_set_header Upgrade $http_upgrade;             proxy_set_header Connection $connection_upgrade;     }     include /etc/nginx/ssl-settings.conf; }
                  Ich definiere einen zweiten Server auf Port 8080, äquivalent zu Edomi. Dort läuft Apache auf 80, PHP selbst für den Websocket auf 8080. Ob Du beides auf Port 80 beim Reverse-Proxy laufen lassen kannst, weiß ich nicht.

                  Kommentar

                  Lädt...
                  X