Ankündigung

Einklappen
Keine Ankündigung bisher.

NGINX als ReverseProxy

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

    NGINX als ReverseProxy

    Hi,

    ich versuche gerade mit der Anleitung

    https://www.smarthomeng.de/user/visu...rse_proxy.html

    diesen Reverse Proxy aufzubauen.

    und scheitere da an der Anleitung für das Komando
    sudo wget http://geolite.maxmind.com/download/...y/GeoIP.dat.gz

    die Datei scheint es nicht mehr zu geben.

    Was muss man den dann alles weglassen?

    Ich tippe mal darauf? Oder noch mehr.
    Code:
    ## # GeoIP Settings # Nur Länder aus erlaubten IP Bereichen dürfen den ReverseProxy
    # passieren!
    # https://www.howtoforge.de/anleitung/nginx-besucher-mit-dem-geoip-modul-nach-landern-blocken-debianubuntu/
    ##
    geoip_country /usr/share/GeoIP/GeoIP.dat; map $geoip_country_code $allowed_country { default yes; BY no; BR no; KP no; KR no; RS no; RO no; RU no; CN no; CD no; NE no; GH no; IQ no; IR no; SY no; UA no; }

    Nächste Frage was für eine domain muss ich den bei


    sudo certbot certonly --rsa-key-size 4096 --webroot -w /var/www/letsencrypt -d <mydomain>.<myds>.<me>

    angeben. Wäre das z.b. meine MyFRITZ!-Adresse Ihre MyFRITZ!-Adresse abcdxyz.myfritz.net?

    VG
    Jürgen

    #2
    Hallo Jürgen,
    zum Download kann ich gerade nichts sagen..
    Die Domain sollte Deine eigene sein :-)
    Ich hatte zunächst mein Dyndns account versucht, da hat sich aber Letsencrypt beschwert, da dort schon zu viele Domains registriert wurden.
    Ich habe bei meiner eigenen Domain eine Subdomain für shng eingerichtet und für diese dann problemlos ein Zertifikat erstellt also z.B. "shng.heckmann.de"
    Myfritz kann klappen, aber auch hier ist die Wahrscheinlichkeit groß, dass zu viele bereits dort registriert sind.

    Gruß Jürgen

    Kommentar


      #3
      Hallo,

      in den Kommentaren des Blog-Eintrags https://www.smarthomeng.de/nginx-als-reverseproxy wurde das auch schon erwähnt.
      Hatte das gleiche Problem.

      In der /etc/nginx/conf.d/<mydomain>.<myds>.<me>.conf noch die folgenden Zeilen:

      Code:
          ## Blocken, wenn Zugriff aus einem nicht erlaubten Land erfolgt ##
          if ($allowed_country = no) {
              return 403;
          }
      Gruß Stefan
      Zuletzt geändert von stoepf; 12.05.2020, 07:45.

      Kommentar


        #4
        Du könntest https://dl.miyuru.lk/geoip/maxmind/c...axmind4.dat.gz nutzen.
        Ich hab das im Raspi Image so drin und funktioniert. https://github.com/smarthomeNG/ansib...n/04_nginx.yml

        Kommentar


          #5
          Zitat von Jürgen Beitrag anzeigen
          Hallo Jürgen,
          Die Domain sollte Deine eigene sein :-)
          Ich hatte zunächst mein Dyndns account versucht, da hat sich aber Letsencrypt beschwert, da dort schon zu viele Domains registriert wurden.
          Ich habe bei meiner eigenen Domain eine Subdomain für shng eingerichtet und für diese dann problemlos ein Zertifikat erstellt also z.B. "shng.heckmann.de"
          Myfritz kann klappen, aber auch hier ist die Wahrscheinlichkeit groß, dass zu viele bereits dort registriert sind.
          Das wird dann Tendenziell bei allen dyndns providern so sein...da fand ich die lösung von callidomus klasse. Auch wenn sie was gekostet hat. Ich glaube bei fest-ip gibt es so einen ähnlichen service.

          Onkelandy kann ich dein Image auch im Anwendungsfall ReverseProxy nutzen?

          Kommentar


            #6
            Klar, da ist alles schon vorbereitet und es gibt ein "setup_all" oder "setup_nginx" Skript, das dich durch den Prozess führt. Das baut aber auf Zertifikats-Auth auf, basic auth habe ich nie probiert. Aber musst ja nur das erstellte Zertifikat auf den Client laden und im Browser auswählen.

            Bezüglich dyndns hatte ich bis dato keine Probleme. Ich nutze synology.me

            Kommentar


              #7
              Ich habe mich auch an der Anleitung zum NGINX versucht (https://www.smarthomeng.de/nginx-als-reverseproxy). Das Problem mit der GeoIP habe ich "gelöst" indem ich in der /etc/nginx/nginx.conf den oberen Teil weg gelassen habe und in der /etc/nginx/conf.d/<mydomain>.conf die erste if-Anweisung auskommentiert habe.

              Anschließend alles nach Anleitung und bis einschließlich der drei Passwörter für die SmartVisu, Alexa und shng.

              Beim Testen des Zugriffs bekomme ich eine Fehlermeldung im Browser
              HTML-Code:
              Fehler: Verbindung fehlgeschlagen
              
              Firefox kann keine Verbindung zu dem Server unter xxxxxxx.org aufbauen.
              Als Work-Around habe ich unter /etc/sites-available/default die beiden Zeilen auskommentiert - steht so nicht in der Anleitung, klang für mich aber logisch:
              HTML-Code:
              listen 443 ssl default_server;
              listen [::]:443 ssl default_server;
              Die Fehlermeldung im Browser lautet nun:
              HTML-Code:
              Fehler: Gesicherte Verbindung fehlgeschlagen
              
              Beim Verbinden mit xxxxxxx.org trat ein Fehler auf. PR_END_OF_FILE_ERROR
              Kann damit jemand etwas anfangen? Vielen Dank schonmal im Voraus!

              Kommentar


                #8
                Hallo,

                mein DlinkDDns Account wurde abgeschaltet und ich musste auf einen neuen Anbieter gehen dies ist jetzt xxx.dynv6.net.
                Ich habe alle zugehörigen Stellen umgestellt und ein neues Letsencrypt Zertifikat erstellt. aber ich kriege weiterhin den Fehler 403 wenn ich versuche auf dieSmarVisu zu zugreife. Im Fehlerlog von NGINX ist nichts ich kriege im Acesslog folgende Meldung:

                139.247.85 - SmartvisuUser [06/Jul/2020:06:43:07 +0200] "GET /smartVISU/ HTTP/1.1" 403 199 "-" "Mozilla/5.0 (Windows NT 6.1; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"

                Hier das Config File: "xxx.dynv6.net.conf" unter etc/nginx/conf.d

                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|pok er|porn|sex|teen) )
                {
                return 403;
                }
                
                listen 443 ssl default_server;
                server_name xxx.dynv6.net;
                
                ##
                # SSL
                ##
                
                ## Activate SSL, setze SERVER Zertifikat Informationen ##
                # Generiert via Let's Encrypt!
                ssl on;
                ssl_certificate /etc/letsencrypt/live/xxx.dynv6.net/fullchain.pem;
                ssl_certificate_key /etc/letsencrypt/live/xxx.dynv6.net/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/xxx.dynv6.net;
                index index.php index.htm index.html;
                Hat irgendjemand eine Idee wo ich weiter schauen kann ?
                Vielen Dank im Voraus.
                Gruß Christian

                Kommentar


                  #9
                  Hallo Christian,

                  meldet sich denn unter xxx.dynv6.net:<DeinPort> die Nginx Startseite?

                  Gruß Jürgen

                  Kommentar


                    #10
                    Hallo Christian,
                    was mir fehlt ist der "Location" Teil - also wohin der nginx leiten soll

                    Bis jetzt weiß ja noch keiner ob die 403 vom nginx kommt oder vom Webserver dahinter - richtig?
                    am besten die ganzen if's mit 403 mal auskommentieren, nginx neustarten und testen
                    sollte das klappen, eine If-Anweisung nach der anderen einkommentieren, damit man raus bekommt an welcher es klemmt.

                    alternativ "etwas rotzig" aus 403 => andere HTTP Statuscodes machen und dann im browser schauen welcher Code kommt -> damit man die Stelle rausbekommt wo der 403 her kommt

                    grüße Norbert

                    Kommentar


                      #11
                      Hallo Jürgen,

                      wenn ich es auf Port xxx.dynv6.net/8000; Http oder /9000 versuche kommt "Die Website ist nicht erreichbar" auch mit /smartVISU hintendran

                      Viele Grüße Christian

                      Kommentar


                        #12
                        Hallo Norbert,

                        du hast recht der Location Teil habe ich beim kopieren vergessen .

                        Code:
                        ...
                        root /var/www/xxx.dynv6.net;
                        index index.php index.htm index.html;
                        
                        # Weiterleitung zu SmartHomeNG (Websocket Schnittstelle) mit Basic Auth
                        location / {
                        auth_basic "Restricted Area: smartVISU";
                        auth_basic_user_file /etc/nginx/.smartvisu;
                        
                        # Zugreifendes Land erlaubt?
                        if ($allowed_country = no) {
                        return 403;
                        }
                        
                        # Nur Websocket Verbindungen gegen "/" durchlassen!
                        if ($http_upgrade = websocket) {
                        proxy_pass http://192.168.178.50:8383;
                        }
                        if ($http_upgrade != websocket) {
                        return 403;
                        }
                        }
                        
                        # Zugriff auf die SmartVISU mit Basic Auth
                        location /smartVISU {
                        auth_basic "Restricted Area: smartVISU";
                        auth_basic_user_file /etc/nginx/.smartvisu;
                        
                        # Zugreifendes Land erlaubt?
                        if ($allowed_country = no) {
                        return 403;
                        }
                        
                        proxy_pass http://192.168.178.50/smartVISU;
                        proxy_set_header Host $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;
                        }
                        
                        
                        # Alexa Plugin Weiterleitung
                        location /alexa {
                        auth_basic "Restricted Area: Alexa";
                        auth_basic_user_file /etc/nginx/.alexa;
                        
                        # Zugreifendes Land erlaubt?
                        if ($allowed_country = no) {
                        return 403;
                        }
                        
                        proxy_pass http://192.168.178.50:9000/;
                        proxy_set_header Host $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;
                        }
                        
                        # Network Plugin Weiterleitung
                        location /shng {
                        auth_basic "Restricted Area: SmartHomeNG";
                        auth_basic_user_file /etc/nginx/.shng;
                        
                        if ($allowed_country = no) {
                        return 403;
                        break;
                        }
                        proxy_pass http://192.168.178.50:8090/;
                        proxy_set_header Host $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;
                        }
                        }
                        Ich werde jetzt das mit den IF Schleifen auskommentieren mal durchprobieren
                        Viele Grüße
                        Christian

                        Kommentar


                          #13
                          Hallo Christian,

                          xxx.dynv6.net:8000 bitte mit Doppelpunkt..
                          Die Portweiterleitung im Router ist aber eingerichtet?

                          Gruß Jürgen

                          Kommentar


                            #14
                            Hallo Norbert,

                            hab einen Fehler meinerseits entdeckt Beim Port gehört 80 rein

                            Zitat von Volzor Beitrag anzeigen
                            # Nur Websocket Verbindungen gegen "/" durchlassen! if ($http_upgrade = websocket) { proxy_pass http://192.168.178.50:8383; } if ($http_upgrade != websocket) { return 403; } }
                            hab jetzt alle ifs mit 403 ausgeklammert und bekomme den 403 Fehler immer noch. Gibts da noch andere Stellen am Webserver direkt.
                            Gibt es eine einfache Möglichkeit den NGinx kurzzeitig auszuschalten so dass alle Anfragen durchkommen?

                            Danke und Viele Grüße
                            Christian

                            Kommentar


                              #15
                              Hallo Norbert,

                              Doppelpunkt hatte ich.Die Portfreigaben sollten passen das ging ja mal außerdem würde ich ja dann nicht bis zum NGinx durchkommen.
                              Sicherheitshalber mal noch die Config der Fritz Box
                              You do not have permission to view this gallery.
                              This gallery has 1 photos.

                              Kommentar

                              Lädt...
                              X