Reverse Proxy auf einem Raspi

Begonnen von moonsorrox, 23 Mai 2018, 12:42:22

Vorheriges Thema - Nächstes Thema

moonsorrox

Hier nun der Thread zu einem Reverse Proxy mit einem Raspi mit der Einrichtung zu mehreren Weiterleitungen.
Meine Frage war folgende:
ZitatIch habe das ebenso eingerichtet bei mir funktioniert aber leider nur eine Weiterleitung.
Ich habe auch auf einem Raspi ein nginx dort auch mit Passwort und User und letsencrypt
meinedomain.de/fhem -> FHEM geht also

aber eine zweite z.B. in der Form "meinedomain.de/webhook -> Geofency" funktioniert nicht.
Ich habe das ganze nach einer Anleitung aus dem Internet eingerichtet, weil ich auch nicht der Freak bin was Revrse Proxy betrifft.
Das war alles für mich Neuland...
Läuft das bei auch auf Port 443..?

Ich suche jetzt erst einmal die NGINX-Config da ich da nicht so oft dran bin arbeite ich mich erst mal durch  ;)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Wernieman

Wahrscheinlich unter:
/etc/nginx/sites-enabled

Prüfe bitte auch folgendes (sollte bei Dir leer sein)
/etc/nginx/conf.d
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

moonsorrox

#2
Ich sage erst einmal Danke, denn ich muss los. Werde später alles hier rein stellen...!  ;)
Doch schnell noch hier die config
server {
        listen 80;
        listen [::]:80;

        server_name www.fhem.XXXXXXX.de;

    include /etc/nginx/snippets/letsencrypt.conf;

        # Redirect any HTTP request to HTTPS
        location / {
        return 301 https://www.fhem.XXXXXXXXXXXXXXXXXXXXXX.de;}

        error_log  /var/log/nginx/XXXXXXXXXXXXXXXXXXXXXX.de-error.log;
        access_log /var/log/nginx/XXXXXXXXXXXXXXXXXXXXXX.de-access.log;
}


/etc/nginx/conf.d
Das ist ja bei mir ein Verzeichnis und in diesem ist die folgende Datei drin "fhem.XXXXXXXXXXXXXXXXXXXXXX.de.conf"
Brauchst du die auch oder darf die da evtl. gar nicht sein..?
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Wernieman

#3
1. Anonymisiere bitte ....
2. Warum machst DU einen 301? Das ist kein Proxy, sondern ein redirekt ....
......
3. Dein Server ist so im Netz erreichbar ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

moonsorrox

1. gemacht Danke, habe ich vergessen ;)
2. gute Frage ich habe es seinerzeit einfach nachgebaut..
3. ja ich komme per HTTPS://xxxxxxxxxxxxxxx.de drauf mit User und Passwort
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Wernieman

Ich brauchte kein User/Passwort ..... jedenfalls nicht für die erste Seite ...

Eigentich steht in der nginx-config so etwas:
server {
    listen      80 default_server;
    listen      [::]:80 default_server;
    server_name default_server;

    root /usr/share/nginx/html;
    index index.html index.htm;

    access_log  /var/log/nginx/default.access.log;
    error_log   /var/log/nginx/default.error.log;

    # Sicherheit
    server_tokens off;
    add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains' always;

    # Für LetsEncrypt
    location ~ /\.well-known {
        root /usr/share/nginx/html;
    }

    # Alles andere auf https://
    location / {
        try_files $uri $uri/ =404;
        return 301 https://$host$request_uri;
    }
}

server {
    listen      443 ssl http2;
    listen [::]:443 ssl http2;
    server_name MeinTollerServerName;

    ssl_certificate_key /etc/letsencrypt/live/MeinTollerServerName/privkey.pem;
    ssl_certificate     /etc/letsencrypt/live/MeinTollerServerName/fullchain.pem;

    root        /usr/share/nginx/html;
    index       index.html index.htm;

    access_log  /var/log/nginx/MeinTollerServerName.access.log;
    error_log   /var/log/nginx/MeinTollerServerName.error.log;

    # Sicherheit
    server_tokens off;
    add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains' always;

    # Normalerweise alles nur nach Login
    location / {
        auth_basic              "Restricted Content";
        auth_basic_user_file    /etc/nginx/.htpasswd;

        proxy_set_header        Host $host;
        proxy_set_header        X-Forwarded-Host $host;
        proxy_set_header        X-Forwarded-Server $host;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass              https://InternerWebServer:443;
        client_max_body_size    128M;
    }


    # Normalerweise alles nur nach Login / Fhem direkt
    location /fhem {
        auth_basic              "Restricted Content";
        auth_basic_user_file    /etc/nginx/.htpasswd;

        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;
        proxy_http_version      1.1;

        # if ($http_upgrade = "websocket") {
        #    set $my_http_upgrade $http_upgrade;
        #    set $my_connection "upgrade";
        # }
        # proxy_set_header      Upgrade $my_http_upgrade;
        # proxy_set_header      Connection $my_connection;

        proxy_pass              http://MeinTollerFhemServer:8083;
        proxy_read_timeout      90;
        proxy_buffering         off;
        client_max_body_size    128M;
    }
}


Config sollte so adaptierbar (und verbesserbar) sein ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

moonsorrox

#6
OK ich habe die erst einmal gespeichert. Werde sie dann anpassen
Aber zum Verständnis muss ich nochmal ein paar Fragen stellen.

1. Eine nginx-conf gibt es bei mir nicht, ist evtl. die ngix.conf unter /etc/nginx gemeint, aber die sieht eben ganz anders aus..! damit ist diese wohl nicht gemeint..!

2. /etc/nginx/conf.d/ ist ein Verzeichnis richtig..?
da ist eine Datei drin die heißt fhem.xxxxxxxxxxxxx.de.conf mit folgendem Inhalt
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 443 ssl default_server;
    server_name xxxxx.xxxxxxxxxxxxxx.de;

    ##
    # SSL
    ##

    ## Activate SSL, setze SERVER Zertifikat Informationen ##
    # Generiert via Let's Encrypt!
    ssl on;
    ssl_certificate /etc/letsencrypt/live/fhem.xxxxxxxxxxxxxx.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/fhem.xxxxxxxxxxxxxx.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/fhem.xxxxxxxxxxxxxx.de;
    index index.php index.htm index.html;

    # Weiterleitung zu SmartHomeNG (Websocket Schnittstelle) mit Basic Auth
    location / {
        auth_basic "Restricted Area: fhem";
        auth_basic_user_file /etc/nginx/.fhem;

        # Zugreifendes Land erlaubt?
        if ($allowed_country = no) {
                return 403;
        }

        # Nur Websocket Verbindungen gegen "/" durchlassen!
        if ($http_upgrade = websocket) {
                proxy_pass http://meineIP:8083;
        }
        if ($http_upgrade != websocket) {
                return 403;
        }
    }

    # Zugriff auf die Fhem mit Basic Auth
    location /fhem {
        auth_basic "Restricted Area: FHEM";
        auth_basic_user_file /etc/nginx/.fhem;

        # Zugreifendes Land erlaubt?
        if ($allowed_country = no)  {
                return 403;
        }

        proxy_pass http://meineIP:8083;
        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;
    }


#    # Zugriff auf die Fhem mit Basic Auth
#    location /webhook {
#        auth_basic "Restricted Area: WEBHOOK";
#        auth_basic_user_file /etc/nginx/.webhook;

#        # Zugreifendes Land erlaubt?
#        if ($allowed_country = no)  {
#                return 403;
#        }

#        proxy_pass http://meineIP:8087;
#        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;
#    }


   location /webhook/ {
    proxy_pass http://meineIP:8087; # RPI-Monitor auf rasp-reverseproxy #funktioniert

                proxy_set_header Host $host;
                auth_basic "Passwortgeschützter Bereich";
                auth_basic_user_file  "/etc/nginx/.webhook";
                access_log /var/log/nginx/ips.access.log;
                error_log /var/log/nginx/ips.error.log;
    }


}


auch diese sieht etwas anders aus...!!

3. unter /etc/nginx/sites-enabled/ - gibt es eine default Datei ohne Endung wenn ich da drauf klicke lande ich im Ordner  /etc/nginx/sites-available/ da ist meine Datei von weiter oben fhem.xxxxxxxxx-hausautomation auch ohne Endung, deren Inhalt habe ich oben gepostet.


Ich weiß es sind viel Fragen aber ich hatte doch einige Probleme, evtl. ist da irgendwo etwas zuviel drin.
Jetzt muss ich erst einmal wissen was ich alles genau wohin bringe damit ich mir das Teil nicht zerschieße  ;)
letsencrypt läuft noch ca. 2,5 Monate

Evtl. kann da einiges von raus..? und dann beginne ich mit putty die Dateien wieder anzupassen.
Ich kann mir ja alles sichern und wenn es nicht funktioniert wieder zurück spielen.


Also Kurzform für mich.
a. welche Dateien brauche ich..?
b. wohin müssen die..?

Vielen Dank  :)

Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

CoolTux

Die /etc/nginx/nginx.conf ist die globale Konfigurationsdatei. Dort stehen nur Sachen drin welche alle vhosts betreffen.
Unter /etc/nginx/site-available befinden sich die Konfigurationen der vhosts drin. pro vhost ein Konfigfile.
Scharf schalten tut man das ganze in dem man ein softlink setzt von /etc/nginx/site-available/vhost.conf nach /etc/nginx/site-enable/vhost.conf
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

moonsorrox

OK also ist die vhost.conf die ich brauche und so heißen muss wie meine vhost Datei
z.B.
fhem.muster1-hausautomation.conf
fhem.muster2-hausautomation.conf
fhem.muster3-hausautomation.conf

Meine Datei hat aber keine Endung und das ist richtig..?
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

CoolTux

Du hast in der nginx.conf folgende Zeilen

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;


Bei mir steht in der conf.d gar nichts drin. Alles entscheidende steht unter sites-enabled

(14:32 root@pi-proxy01 sites-enabled) > ls
fhem02-reverseproxy      fhem-reverseproxy          fhemwebhook-reverseproxy  tuxnetwiki-reverseproxy
fhemmobile-reverseproxy  fhemwebhook2-reverseproxy  squidguard                wpad

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

moonsorrox

OK in der nginx.conf weiter unten steht dann das drin was du gepostet hast kann ich dann wohl alles so lassen...

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
worker_connections 768;
# multi_accept on;
}

http {
    ##
    # 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;
    }

##
# Basic Settings
##

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;

# server_names_hash_bucket_size 64;
# server_name_in_redirect off;

include /etc/nginx/mime.types;
default_type application/octet-stream;

##
# SSL Settings
##

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;

##
# Logging Settings
##

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

##
# Gzip Settings
##

gzip on;
gzip_disable "msie6";

# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

##
# Virtual Host Configs
##

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

##
# Harden nginx against DDOS
    ##

    client_header_timeout 10;
    client_body_timeout   10;
}


#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen     localhost:110;
# protocol   pop3;
# proxy      on;
# }
#
# server {
# listen     localhost:143;
# protocol   imap;
# proxy      on;
# }
#}
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

moonsorrox

#11
EDIT:// so nun habe ich es doch hinbekommen, habe jetzt die Passwort Datei angelegt und nun komme ich wieder mit dem User und dem Passwort drauf.
Ich weiß nicht ob das so richtig ist..?

Ich muss jetzt aber den gesamten Pfad eingeben https://fhem.xxxxxx-hausautomation.de/fhem
Ist das richtig so, weil @werniemann hatte geschrieben auf der ersten Seite braucht er kein Passwort, wahrscheinlich dann nur bei der Weiterleitung..!?
Keine Ahnung, dass weiß ich jetzt nicht, bitte nochmal über meine config schauen. Brauch da noch etwas Unterstützung  :-\


jetzt komme ich gar nicht mehr drauf..! :-\
Es gibt jetzt unter /etc/nginx/sites-available/ die Datei fhem.xxxxxx-hausautomation


und unter /etc/nginx/sites-enabled/ den link angelegt mit
ln -s /etc/nginx/sites-available/fhem.xxxxxx-hausautomation /etc/nginx/sites-enabled/fhem.xxxxxx-hausautomation

bekomme ein "403 Forbidden" den nginx vorher gestoppt und wieder gestartet

die Datei fhem.xxxxxx-hausautomation
server {
    listen      80 default_server;
    listen      [::]:80 default_server;
    server_name default_server;

    root /usr/share/nginx/html;
    index index.html index.htm;

    access_log  /var/log/nginx/default.access.log;
    error_log   /var/log/nginx/default.error.log;

    # Sicherheit
    server_tokens off;
    add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains' always;

    # Für LetsEncrypt
    location ~ /\.well-known {
        root /usr/share/nginx/html;
    }

    # Alles andere auf https://
    location / {
        try_files $uri $uri/ =404;
        return 301 https://$host$request_uri;
    }
}

server {
    listen      443 ssl http2;
    listen [::]:443 ssl http2;
    server_name fhem.xxxxxx-hausautomation.de;

    ssl_certificate_key /etc/letsencrypt/live/fhem.xxxxxx-hausautomation.de/privkey.pem;
    ssl_certificate     /etc/letsencrypt/live/fhem.xxxxxx-hausautomation.de/fullchain.pem;

    root        /usr/share/nginx/html;
    index       index.html index.htm;

    access_log  /var/log/nginx/fhem.xxxxxx-hausautomation.de.access.log;
    error_log   /var/log/nginx/fhem.xxxxxx-hausautomation.de.error.log;

    # Sicherheit
    server_tokens off;
    add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains' always;

    # Normalerweise alles nur nach Login
    location / {
        auth_basic              "Restricted Content";
        auth_basic_user_file    /etc/nginx/.htpasswd;

        proxy_set_header        Host $host;
        proxy_set_header        X-Forwarded-Host $host;
        proxy_set_header        X-Forwarded-Server $host;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass              https://fhem.xxxxxx-hausautomation.de:443;
        client_max_body_size    128M;
    }


    # Normalerweise alles nur nach Login / Fhem direkt
    location /fhem {
        auth_basic              "Restricted Content";
        auth_basic_user_file    /etc/nginx/.htpasswd;

        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;
        proxy_http_version      1.1;

        # if ($http_upgrade = "websocket") {
        #    set $my_http_upgrade $http_upgrade;
        #    set $my_connection "upgrade";
        # }
        # proxy_set_header      Upgrade $my_http_upgrade;
        # proxy_set_header      Connection $my_connection;

        proxy_pass              http://fhemServer:8083;
        proxy_read_timeout      90;
        proxy_buffering         off;
        client_max_body_size    128M;
    }
}


EDIT://
ich habe jetzt in der Logdatei gesehen das er mir folgenden Fehler zeigt, sicher weil ich jetzt die Config geändert habe...!
Zitat2018/05/24 16:42:04 [error] 751#751: *4 open() "/etc/nginx/.htpasswd" failed (2: No such file or directory), client: 89.183.115.182, server: fhem.xxxxxx-hausautomation.de, request: "GET / HTTP/2.0", host: "fhem.xxxxxx-hausautomation.de"
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Wernieman

Ich habe bei mir ALLES mit User/Passwort eingetragen. Aud em Web (Öffentlich) soll schließlich keiner Zugreifen können.

Wenn Du dieses nicht willst, nimm es bei "location /" raus und lasse es nur bei "location /fhem" drin.

- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

moonsorrox

Habe ich jetzt nicht richtig verstanden...! :-\

Du hattest geschrieben
ZitatIch brauchte kein User/Passwort ..... jedenfalls nicht für die erste Seite ...

Ich möchte beim zugreifen mich mit User und Passwort in mein fhem einloggen, aber was ist bei dir die 1.Seite..?

So wie es bei mir jetzt ist muss ich eben den gesamten Pfad eingeben diesen mit "fhem" dahinter
https://fhem.xxxxxx-hausautomation.de/fhem
somit bin ich ja auf dem Weboberfläche wie eingetragen xxxxx.8083
Ist das bei dir auch der Fall oder muss ich da noch was verändern...? Deshalb oben die Frage der ersten Seite.

Wenn ich eingebe
https://fhem.xxxxxxx-hausautomation.de/
kommt die Fehlerseite 502 Bad Gateway


Mir geht es auch darum das ich später weitere Pfade hinzufügen kann und das ist mir eben noch nicht gelungen, gut aber das später.
Ich muss erst einmal die jetzige Konstellation verstehen... :-\

Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Wernieman

Schau Dir mal folgendes an ... hast Du es angepasst?
    location / {
        auth_basic              "Restricted Content";
        auth_basic_user_file    /etc/nginx/.htpasswd;

        proxy_set_header        Host $host;
        proxy_set_header        X-Forwarded-Host $host;
        proxy_set_header        X-Forwarded-Server $host;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass              https://fhem.xxxxxx-hausautomation.de:443;
        client_max_body_size    128M;
    }


Mal eine Kleine Einführung:
"location /" Für den Pfad / gilt folgendes ..
"location /fhem" Für den Pfad /fhem gilt folgendes ..
Wenn Du also für / was haben willst, mußt DU entweder:
eine Website Hinterlegen (und root /.../ devinieren) oder eine Umleitung definieren, ala
return 301 https://......;
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

moonsorrox

Zitat von: Wernieman am 25 Mai 2018, 08:05:46
Schau Dir mal folgendes an ... hast Du es angepasst?
sorry wenn ich mich da grad etwas blöd  :-\ anstelle, aber mir ist da einiges noch nicht so klar. :o

wenn ich das richtig verstanden habe sollte ich mich doch ohne /fhem in der url einloggen können, dass habe ich jetzt mal getestet...
ich gebe https://fhem.xxxxxxx-hausautomation.de und es kommt die Abfrage nach User und Passwort, dass gebe ich ein und es kommt eine Fehlerseite "502 Bad Gateway"
Das ist denke ich OK, da ich ja nur einen User/Passwort für fhem habe

ich habe diesen Bereich so drin...! hier der Teil aus der config
   # Normalerweise alles nur nach Login
    location / {
        auth_basic              "Restricted Content";
        auth_basic_user_file    /etc/nginx/.htpasswd;

        proxy_set_header        Host $host;
        proxy_set_header        X-Forwarded-Host $host;
        proxy_set_header        X-Forwarded-Server $host;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass                 https://fhem.xxxxxx-hausautomation.de:443;
        client_max_body_size    128M;
    }


    # Normalerweise alles nur nach Login / Fhem direkt
    location /fhem {
        auth_basic              "Restricted Content";
        auth_basic_user_file    /etc/nginx/.htpasswd;

        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;
        proxy_http_version      1.1;

        # if ($http_upgrade = "websocket") {
        #    set $my_http_upgrade $http_upgrade;
        #    set $my_connection "upgrade";
        # }
        # proxy_set_header      Upgrade $my_http_upgrade;
        # proxy_set_header      Connection $my_connection;

        proxy_pass              http://10.0.0.50:8083;
        proxy_read_timeout      90;
        proxy_buffering         off;
        client_max_body_size    128M;
    }


au man ich habe soviel verschiedene Anleitungen aus dem Internet angeschaut und jeder macht es anders...  :-\
Aber wir beide müssen das jetzt hier mal zu Ende kauen damit ich das endlich mal hinbekomme speziell dann für mehrere "location /", ich Danke vielmals vorab  ;)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Wernieman

1. Diese User/Passworte sind NICHT die FHEM User/Passworte!
        auth_basic              "Restricted Content";
        auth_basic_user_file    /etc/nginx/.htpasswd;

Wenn Du für FHEM Dich auf Fhem User/Passwort verlassen willst, müsstest Du dieses bei "Location FHEM" rausnhemne.

Meine Empfehlung: Lasse es Drin! Es sei denn, der Proxy ist extern nicht erreichbar (was ich aber bei Dir anders verstanden habe).

Bin nur dieses Wochenende "ausgelastet", da were ich Dir schlecht helfen können. Wie sieht es nächste Woche bei Dir aus?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

moonsorrox

#17
Zitat von: Wernieman am 25 Mai 2018, 17:16:15
1. Diese User/Passworte sind NICHT die FHEM User/Passworte!
        auth_basic              "Restricted Content";
        auth_basic_user_file    /etc/nginx/.htpasswd;

Achso, na dann kann es nicht gehen...!  ;)
Das ist dann wohl der Zugriff auf den Raspi für root, oder.?

Zitat von: Wernieman am 25 Mai 2018, 17:16:15
Wenn Du für FHEM Dich auf Fhem User/Passwort verlassen willst, müsstest Du dieses bei "Location FHEM" rausnhemne.

Meine Empfehlung: Lasse es Drin! Es sei denn, der Proxy ist extern nicht erreichbar (was ich aber bei Dir anders verstanden habe).
Ja, klar lasse ich die drin..!
Der Zugriff auf fhem mit Passwort und User klappt ja bestens
Soll denn nur eben später noch weiter gehen mit z.B. unter fhem Webhook, damit ich da mit Geofency eine Meldung bekomme bei Abwesenheit...!

Zitat von: Wernieman am 25 Mai 2018, 17:16:15
Bin nur dieses Wochenende "ausgelastet", da were ich Dir schlecht helfen können. Wie sieht es nächste Woche bei Dir aus?
kein Problem, lass dir Zeit das machen wir ganz in Ruhe... Schreib gerne immer wann es geht und ich mache das auch so.
Nächste Woche, sehr gern..  :)

Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Wernieman

am liebsten tagsüber .. abends und am Wochenende ist bei mir immer sehr schlecht ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

CoolTux

Wenn Du beim Reverse Proxy das basic auth gleich setzt wie beim fhem server musst dich nur einmal anmelden, nämlich beim reverse proxy. der rest wird dann durchgeleitet.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

moonsorrox

das sieht dann wie aus  ;)
ich möchte mir da nix kaputt machen wenn ich mit meinem Unwissen herum fummel  ;)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

CoolTux

Einfach so lassen was Basic auth an geht. Nur den selben Usernamen und Passwort wählen

Im übrigen ist dein proxy_pass Unsinn es sei denn fhem läuft direkt auf dem fhem Server wirklich auf 443
Ansonsten 8083
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

moonsorrox

Zitat von: CoolTux am 25 Mai 2018, 20:12:16
Im übrigen ist dein proxy_pass Unsinn es sei denn fhem läuft direkt auf dem fhem Server wirklich auf 443
Ansonsten 8083
Oh je ich bin immer mehr verwirrt  :-\
Nein der fhem Server läuft auf einem Intel-NUC und natürlich auf 8083 und der Reverse-Proxy auf einem RasPi mit anderer IP.

Die DNS Adresse ist bei meinem Internet Provider und in der Fritzbox eingetragen und dort auf 443.
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

CoolTux

Vorschlag. Das Du erstmal ein kleines Erfolgserlebnis hast



server {

        listen 443 http2;
        listen [::]:443 http2;
        server_name fhem.xxxxxx-hausautomation.de;

        # Add headers to serve security related headers
        # Before enabling Strict-Transport-Security headers please read into this
        # topic first.
        add_header Strict-Transport-Security "max-age=15768000";
        add_header X-Frame-Options SAMEORIGIN;
        add_header X-Content-Type-Options nosniff;
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Robots-Tag none;
        add_header X-Download-Options noopen;
        add_header X-Permitted-Cross-Domain-Policies none;


        ssl_certificate           /etc/nginx/certs/fhemCert.pm;
        ssl_certificate_key       /etc/nginx/certs/fhemKey.pm;

        ssl on;
        ssl_session_cache  builtin:1000  shared:SSL:10m;
        ssl_session_timeout 10m;
        ssl_session_cache shared:SSL:10m;
        ssl_session_tickets off;
        ssl_ecdh_curve secp384r1;
        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_protocols TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;
        ssl_prefer_server_ciphers on;



        access_log            /var/log/nginx/fhem-reverseproxy/access.log;
        error_log             /var/log/nginx/fhem-reverseproxy/error.log;

        location / {

                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;
                proxy_http_version      1.1;


                proxy_pass          http://10.0.0.50:8083;
                #proxy_read_timeout  90;
                proxy_read_timeout  86400;
                proxy_buffering     off;

                auth_basic "Restricted Content";
                auth_basic_user_file /etc/nginx/.htpasswd;
        }
}


Die Datei heißt bei mir fhem-reverseproxy und liegt einfach unter /etc/nginx/sites-available mit link nach sites-enable
Bitte die SSL Zertifikate anpassen
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

moonsorrox

Zitat von: CoolTux am 25 Mai 2018, 22:50:10
Vorschlag. Das Du erstmal ein kleines Erfolgserlebnis hast
     
Die Datei heißt bei mir fhem-reverseproxy und liegt einfach unter /etc/nginx/sites-available mit link nach sites-enable
Bitte die SSL Zertifikate anpassen

Ok Danke und in der Tat habe ich das Erfolgserlebnis  ;) :) ;)

angepaßt - ssl_certificate
angepaßt - ssl_certificate_key

und die

access_log
error_log

Jetzt komme ich mit der direkten Adresse ohne fhem auch drauf  ;)

Da ich ja schon einige Zeit mit meinem Webhook -> Geofancy herum probiere, kann ich das ebenfalls hierüber machen weil in fhem bin ich ja schon.?

Kurze Info dazu ich hatte vor längere Zeit ganz normal über ein DNS Dienst die Anwesenheitserkennung und da hat das alles funktioniert.
Seit ich das hier über https://fhem.xxxxxx-hausautomation.de machen funktioniert das nicht mehr.
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

CoolTux

Zitat von: moonsorrox am 26 Mai 2018, 00:55:07
Ok Danke und in der Tat habe ich das Erfolgserlebnis  ;) :) ;)

angepaßt - ssl_certificate
angepaßt - ssl_certificate_key

und die

access_log
error_log

Jetzt komme ich mit der direkten Adresse ohne fhem auch drauf  ;)

Da ich ja schon einige Zeit mit meinem Webhook -> Geofancy herum probiere, kann ich das ebenfalls hierüber machen weil in fhem bin ich ja schon.?

Kurze Info dazu ich hatte vor längere Zeit ganz normal über ein DNS Dienst die Anwesenheitserkennung und da hat das alles funktioniert.
Seit ich das hier über https://fhem.xxxxxx-hausautomation.de machen funktioniert das nicht mehr.

für webhook nehme ich eine andere url. Somit wäre dann wieder eine andere Konfigdatei.

Was spricht gegen
https://fhemwebhook.xxxxxx-hausautomation.de
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

moonsorrox

Das wäre so auch OK, aber ich dachte da ich ja schon bei fhem drin bin kann ich das gleich drunter schreiben so in der Art..
       location /geo {

                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;
                proxy_http_version      1.1;


                proxy_pass          http://10.0.0.50:8087;
                #proxy_read_timeout  90;
                proxy_read_timeout  86400;
                proxy_buffering     off;

                auth_basic "Restricted Content";
                auth_basic_user_file /etc/nginx/.htpasswd;
         }
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

CoolTux

Sollte auch gehen meines Wissens. Probier es mal aus.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

moonsorrox

Kann ich das auch so schreiben oder nimmt der das dann nicht
location /webhook/geo

Diese Eintragung war eben früher in Geofency http://meindns/webhook/geo
Da wurde mir dann (ich weiß nicht mehr wo, steht glaube ich auch im Wiki) empfohlen ich solle auf ein Reverse-Proxy wechseln damit kann man das ganz easy machen, dann habe ich auf https://xxxxxx gewechselt...
Damit nahm der Irrsinn (Reverse-Proxy) seinen Lauf  ;) :D ;)

Das ist mein Problem das geht in der App auf dem Handy nicht..! und da hat er auf dem Handy immer gemeckert, da sagt er immer fehlgeschlagen...

OK das können wir auch an einem anderen Tag machen... Vielen Dank erst einmal  :)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM