[gelöst] Apache Authentication Proxy nach Wikibeitrag funzt nicht

Begonnen von maddinthebrain, 08 Juni 2018, 08:36:52

Vorheriges Thema - Nächstes Thema

maddinthebrain

Hallo zusammenn,

ich habe bereits wegen meiner nextcloud einen Apache Server am laufen. So war es naheliegend, diesen auch für FHEM zu nutzen. Gesagt getan, habe gleich den Wiki Beitrag https://wiki.fhem.de/wiki/Apache_Authentication_Proxy gefunden. Leider klappt das nicht so ganz. Es scheitert wohl an der fhem.conf und daran, dass der Beitrag nicht für die aktuellste Apache Version steht. Es ist alles wie beschrieben angelegt (fhem.conf, fhem-htpasswd) und auch alle erforderlichen Paket eingebunden, sogar eins was da gar nicht aufgeführt ist (xml... irgendwas, muss ich nachschauen). Wenn ich Fhem.conf eingebunden habe und dann den Apache reloade kommt eine Fehlermeldung. Wenn man ins log schaut, steht dort, dass in fhem.conf in Zeile 10 ein Syntaxfehler wäre und Fhem.conf nicht geladen wird. Kennt das Problem jemand? Meine Kenntnisse was Apache angeht sind jetzt eher beschränkt. Fhem ist natürlich nicht über den Apache erreichbar.

Viele Grüße

Martin
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

rudolfkoenig

Der Beitrag ist nicht von mir, ich kann aber nicht vorstellen, dass in die apache Konfiguration " gehoert, bitte diesen String ueberall gegen " austauschen.

Wernieman

Poste bitte mal Deine config .... gerne auch "anonymisiert"
- 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

maddinthebrain

#3
Also die fhem.conf schaut so aus:
Edit: die " habe ich eingefügt.

<Location /fhem>
  # ProxyPass/ProxyPassReverse leitet HTTP requests auf eine andere URL um
  ProxyPass http://localhost:8084/fhem
  ProxyPassReverse http://localhost:8084/fhem
  ProxyHTMLEnable On
  # ProxyHTMLURLMap passt Links im HTML/JavaScript Source an
  ProxyHTMLURLMap /        /fhem/
  ProxyHTMLURLMap /fhem/     /fhem/
  AuthType Basic
  Auth Name "Password Required"
  AuthUserFile /etc/fhem-htpasswd
  Require valid-user
  Order deny,allow
  Allow from all
</Location>


Die ist vom Wiki. Habe ich erstmal direkt übernommen. Ich wollte erst schauen, ob es spielt. Aber Apache ist ein weites Feld....
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

CoolTux

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

maddinthebrain

#5
OK das mit " hat mich weiter gebracht. Einloggen klappt. Aber danach kommt ne Fehlermeldung dass Webseite nicht erreichbar wäre. Das ist also noch der Wurm drin. Aber wo?

Lokal auf dem Raspi ist alles erreichbar...

Was passt denn nicht?

Grüße Martin
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

maddinthebrain

Hallo,
Nachdem ich die Ausgabe ERR_CONTENT_DECODING_FAILED vom Chrome mal gegoogelt habe, kam ich auf diesen Beitrag: https://stackoverflow.com/questions/40683850/apache-proxying-leads-to-err-content-decoding-failed-error. Dort steht, dass der Backendserver, also Fhem, ein Encoding nutzt, aber der Apache das nicht erlaubt. Das hinzufügen der Zeile RequestHeader unset Accept-Encoding in der fhem.conf macht das dann aber möglich.

Also nun funktioniert es so halb. Es wird die Seite geladen. Die Links zu einzelnen Räumen gehen auch und man Aktionen auslösen. Die Statusicons ändern sich auch. Was nicht funktioniert, ist das css und die svggplots. Ich vermute, dass da der Download der js bzw. css fehlschlägt. Hier passt wohl das mit der Anpassung der Links nicht.

Kann hier mal jemand, der das gemacht mal seine Proxyhtmlurlmap Einträge posten? Das wäre toll.

Danke

Grüße Martin
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

rudolfkoenig

ZitatDort steht, dass der Backendserver, also Fhem, ein Encoding nutzt, aber der Apache das nicht erlaubt.
Koenntest Du bitte den vom Apache gesendeten HTTP-Header uns zeigen, indem du in FHEM/01_FHEMWEB.pm nach der Zeile 399 Folgende einfuegst:
Log 1, $hash->{HDR};
und FHEM neu startest?

FHEMWEB achtet darauf, dass die Antwort nur dann komprimiert wird, falls der Client das auch akzeptiert.
Die FHEMWEB Komprimierung kann man mit dem fwcompress Attribut auch abschalten.

maddinthebrain

#8
Das Problem mit den Encoding hatte ich ja schon gelöst. Mein Fhem.conf sind so aus.:
  GNU nano 2.2.6             Datei: /etc/apache2/conf-available/fhem.conf                                 
<Location /fhem>
  # ProxyPass/ProxyPassReverse leitet HTTP requests auf eine andere URL um
  ProxyPass "http://localhost:8083/fhem/"
  ProxyPassReverse "http://localhost:8083/fhem/"
  ProxyHTMLEnable On
  ProxyRequests Off
# RequestHeader unset Accept-Encoding                                                                     SetOutputFilter INFLATE;proxy-html;DEFLATE
  # ProxyHTMLURLMap passt Links im HTML/JavaScript Source an
   ProxyHTMLURLMap /    /fhem/
   ProxyHTMLURLMap /fhem/ /fhem/
  AuthType Basic
  AuthName "Password Required"
  AuthUserFile /etc/fhem-htpasswd
  Require valid-user
  Order deny,allow
  Allow from all
</Location>


Was ich nun festgestellt habe alles was unterhalb des /fhem Ordners liegt wird nicht aufgerufen. Stattdessen wird die Fhem Startseite geladen. Also so zeigt die Seite mit allen Plots statt der Plots einzelne Frames mit jeweils der Fhem Startseite. An sich schauen die Links HTML Code gut aus.

Aufgerufen über Apache:

<html xmlns="http://www.w3.org/1999/xhtml">
<head root="/fhem">
<title>Home, Sweet Home</title>
<link rel="shortcut icon" href="/fhem/icons/favicon">
<meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="/fhem/pgm2/style.css?v=1528656942" rel="stylesheet">
<link href="/fhem/pgm2/jquery-ui.min.css" rel="stylesheet"><script attr="" type="text/javascript" src="/fhem/pgm2/jquery.min.js"></script><script attr="" type="text/javascript" src="/fhem/pgm2/jquery-ui.min.js"></script><script attr="" type="text/javascript" src="/fhem/pgm2/fhemweb.js"></script><script attr="" type="text/javascript" src="/fhem/pgm2/fhemweb_readingsGroup.js"></script></head><body name="Home, Sweet Home" fw_id="201" generated="1528657132" longpoll="websocket" data-confirmdelete="1" data-confirmjserror="1" data-addhtmltitle="1" data-styledata="" data-availablejs="colorpicker,fbcalllist,knob,readingsGroup,readingsHistory,sortable,uzsu,weekprofile,iconButtons,iconLabel,iconRadio,iconSwitch" data-webname="WEB ">
<div id="menuScrollArea">
<div><a href="/fhem?"><div id="logo"></div></a></div>
<div id="menu">
<table>
<tr><td><table class="room roomBlock1">
<tr><td><div class="menu_Save_config"><a href="/fhem?cmd=save"><span>Save config</span></a> <a id="saveCheck" class="changed" style="visibility:hidden">?</a></div></td>
</tr>
</table></td></tr>
<tr><td><table class="room roomBlock2">
<tr><td><div class="menu_Tablet_UI"><a href="/fhem/ftui/"><span>Tablet-UI</span></a></div></td>
</tr>
</table></td></tr>
<tr><td><table class="room roomBlock3">
<tr><td><div class="menu_Bad"><a href="/fhem?room=Bad"><span>Bad</span></a></div></td>
</tr>
<tr><td><div class="menu_CUL_HM"><a href="/fhem?room=CUL%5fHM"><span>CUL_HM</span></a></div></td>
</tr>
<tr><td><div class="menu_Datenbank"><a href="/fhem?room=Datenbank"><span>Datenbank</span></a></div></td>
</tr>
<tr><td><div class="menu_ESPEasy"><a href="/fhem?room=ESPEasy"><span>ESPEasy</span></a></div></td>
</tr>
<tr><td><div class="menu_Flur_EG"><a href="/fhem?room=Flur%20EG"><span>Flur EG</span></a></div></td>
</tr>
<tr><td><div class="menu_Funk"><a href="/fhem?room=Funk"><span>Funk</span></a></div></td>
</tr>
<tr><td><div class="menu_Garten"><a href="/fhem?room=Garten"><span>Garten</span></a></div></td>
</tr>
<tr><td><div class="menu_Konfiguration"><a href="/fhem?room=Konfiguration"><span>Konfiguration</span></a></div></td>
</tr>
<tr><td><div class="menu_MAX"><a href="/fhem?room=MAX"><span>MAX</span></a></div></td>
</tr>
<tr><td><div class="menu_Markise__amp__Fenster"><a href="/fhem?room=Markise%20%26%20Fenster"><span>Markise &amp; Fenster</span></a></div></td>
</tr>
<tr><td><div class="menu_Media"><a href="/fhem?room=Media"><span>Media</span></a></div></td>
</tr>
<tr><td><div class="menu_OREGON"><a href="/fhem?room=OREGON"><span>OREGON</span></a></div></td>
</tr>
<tr><td><div class="menu_Plots"><a href="/fhem?room=Plots"><span>Plots</span></a></div></td>
</tr>
<tr><td><div class="menu_SD_WS"><a href="/fhem?room=SD%5fWS"><span>SD_WS</span></a></div></td>
</tr>
<tr><td><div class="menu_Schlafzimmer"><a href="/fhem?room=Schlafzimmer"><span>Schlafzimmer</span></a></div></td>
</tr>
<tr><td><div class="menu_USV__amp__Batteriestatus"><a href="/fhem?room=USV%20%26%20Batteriestatus"><span>USV &amp; Batteriestatus</span></a></div></td>
</tr>
<tr><td><div class="menu_Umw__lzpumpe"><a href="/fhem?room=Umw%c3%a4lzpumpe"><span>Umwälzpumpe</span></a></div></td>
</tr>
<tr><td><div class="menu_Unsorted"><a href="/fhem?room=Unsorted"><span>Unsorted</span></a></div></td>
</tr>
<tr><td><div class="menu_Wetter"><a href="/fhem?room=Wetter"><span>Wetter</span></a></div></td>
</tr>
<tr><td><div class="menu_Wohnzimmer"><a href="/fhem?room=Wohnzimmer"><span>Wohnzimmer</span></a></div></td>
</tr>
<tr><td><div class="menu_Zimmer_Emily"><a href="/fhem?room=Zimmer%20Emily"><span>Zimmer Emily</span></a></div></td>
</tr>
<tr><td><div class="menu_Zimmer_Hannah"><a href="/fhem?room=Zimmer%20Hannah"><span>Zimmer Hannah</span></a></div></td>
</tr>
<tr><td><div class="menu_Everything"><a href="/fhem?room=all"><img class="icon icoEverything" src="/fhem/images/default/icoEverything.png" alt="icoEverything" title="icoEverything"> <span>Everything</span></a></div></td>
</tr>
</table></td></tr>
<tr><td><table class="room roomBlock4">
<tr><td><div class="menu_Logfile"><a href="/fhem/FileLog_logWrapper?dev=Logfile&amp;type=text&amp;file=fhem-2018-06.log"><span>Logfile</span></a></div></td>
</tr>
<tr><td><div><a href="/fhem/docs/commandref_DE.html" target="_blank"><span>Commandref</span></a></div></td>
</tr>
<tr><td><div><a href="http://fhem.de/fhem.html#Documentation" target="_blank"><span>Remote doc</span></a></div></td>
</tr>
<tr><td><div class="menu_Edit_files"><a href="/fhem?cmd=style%20list"><span>Edit files</span></a></div></td>
</tr>
<tr><td><div class="menu_Select_style"><a href="/fhem?cmd=style%20select"><span>Select style</span></a></div></td>
</tr>
<tr><td><div class="menu_Event_monitor"><a href="/fhem?cmd=style%20eventMonitor"><span>Event monitor</span></a></div></td>
</tr>
</table></td></tr>
<tr><td><table class="room roomBlock5">
<tr><td><div class="menu_Backup"><a href="/fhem?cmd=backup"><span>Backup</span></a></div></td>
</tr>
</table></td></tr>
</table>
</div>
</div>
<div id="hdr">
<table border="0" class="header"><tr><td style="padding:0">
<form method="post" action="/fhem">
<input type="hidden" name="fw_id" value="201">
<input type="text" name="cmd" class="maininput" size="40" value="" autocorrect="off" autocapitalize="off">
</form>
</td></tr></table>
</div>
</body></html>


Aufgerufen direkt vom Backend

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head root="/fhem">
<title>Home, Sweet Home</title>
<link rel="shortcut icon" href="/fhem/icons/favicon" />
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=768"/>
<meta name="apple-mobile-web-app-capable" content="yes"/>
<meta name="mobile-web-app-capable" content="yes"/>
<link rel="apple-touch-icon" href="/fhem/images/default/fhemicon_ios.png"/>
<link rel="shortcut-icon"    href="/fhem/images/default/fhemicon_ios.png"/>
<link href="/fhem/pgm2/style.css?v=1528656942" rel="stylesheet"/>
<link href="/fhem/pgm2/jquery-ui.min.css" rel="stylesheet"/>
<script attr='' type="text/javascript" src="/fhem/pgm2/jquery.min.js"></script>
<script attr='' type="text/javascript" src="/fhem/pgm2/jquery-ui.min.js"></script>
<script attr='' type="text/javascript" src="/fhem/pgm2/fhemweb.js"></script>
<script attr='' type="text/javascript" src="/fhem/pgm2/fhemweb_readingsGroup.js"></script>
</head>
<body name='Home, Sweet Home' fw_id='667' generated="1528658720" longpoll="websocket" fwcsrf='csrf_356080029349866' data-confirmDelete='1' data-confirmJSError='1' data-addHtmlTitle='1' data-styleData='' data-availableJs='colorpicker,fbcalllist,knob,readingsGroup,readingsHistory,sortable,uzsu,weekprofile,iconButtons,iconLabel,iconRadio,iconSwitch' data-webName='WEBphone '>
<div id="menuScrollArea">
<div><a onClick="location.href='/fhem?'"><div id="logo"></div></a></div>
<div id="menu">
<table>
<tr><td><table class="room roomBlock1">
<tr><td><div class="menu_Save_config"><a onClick="location.href='/fhem?cmd=save&fwcsrf=csrf_356080029349866'"><span>Save config</a> <a id="saveCheck" class="changed" style="visibility:hidden">?</span></a></div></td>
</tr>
</table></td></tr>
<tr><td><table class="room roomBlock2">
<tr><td><div class="menu_Tablet_UI"><a onClick="location.href='/fhem/ftui/'"><span>Tablet-UI</span></a></div></td>
</tr>
</table></td></tr>
<tr><td><table class="room roomBlock3">
<tr><td><div class="menu_Bad"><a onClick="location.href='/fhem?room=Bad'"><span>Bad</span></a></div></td>
</tr>
<tr><td><div class="menu_CUL_HM"><a onClick="location.href='/fhem?room=CUL%5fHM'"><span>CUL_HM</span></a></div></td>
</tr>
<tr><td><div class="menu_Datenbank"><a onClick="location.href='/fhem?room=Datenbank'"><span>Datenbank</span></a></div></td>
</tr>
<tr><td><div class="menu_ESPEasy"><a onClick="location.href='/fhem?room=ESPEasy'"><span>ESPEasy</span></a></div></td>
</tr>
<tr><td><div class="menu_Flur_EG"><a onClick="location.href='/fhem?room=Flur%20EG'"><span>Flur EG</span></a></div></td>
</tr>
<tr><td><div class="menu_Funk"><a onClick="location.href='/fhem?room=Funk'"><span>Funk</span></a></div></td>
</tr>
<tr><td><div class="menu_Garten"><a onClick="location.href='/fhem?room=Garten'"><span>Garten</span></a></div></td>
</tr>
<tr><td><div class="menu_Konfiguration"><a onClick="location.href='/fhem?room=Konfiguration'"><span>Konfiguration</span></a></div></td>
</tr>
<tr><td><div class="menu_MAX"><a onClick="location.href='/fhem?room=MAX'"><span>MAX</span></a></div></td>
</tr>
<tr><td><div class="menu_Markise__amp__Fenster"><a onClick="location.href='/fhem?room=Markise%20%26%20Fenster'"><span>Markise &amp; Fenster</span></a></div></td>
</tr>
<tr><td><div class="menu_Media"><a onClick="location.href='/fhem?room=Media'"><span>Media</span></a></div></td>
</tr>
<tr><td><div class="menu_OREGON"><a onClick="location.href='/fhem?room=OREGON'"><span>OREGON</span></a></div></td>
</tr>
<tr><td><div class="menu_Plots"><a onClick="location.href='/fhem?room=Plots'"><span>Plots</span></a></div></td>
</tr>
<tr><td><div class="menu_SD_WS"><a onClick="location.href='/fhem?room=SD%5fWS'"><span>SD_WS</span></a></div></td>
</tr>
<tr><td><div class="menu_Schlafzimmer"><a onClick="location.href='/fhem?room=Schlafzimmer'"><span>Schlafzimmer</span></a></div></td>
</tr>
<tr><td><div class="menu_USV__amp__Batteriestatus"><a onClick="location.href='/fhem?room=USV%20%26%20Batteriestatus'"><span>USV &amp; Batteriestatus</span></a></div></td>
</tr>
<tr><td><div class="menu_Umw__lzpumpe"><a onClick="location.href='/fhem?room=Umw%c3%a4lzpumpe'"><span>Umwälzpumpe</span></a></div></td>
</tr>
<tr><td><div class="menu_Unsorted"><a onClick="location.href='/fhem?room=Unsorted'"><span>Unsorted</span></a></div></td>
</tr>
<tr><td><div class="menu_Wetter"><a onClick="location.href='/fhem?room=Wetter'"><span>Wetter</span></a></div></td>
</tr>
<tr><td><div class="menu_Wohnzimmer"><a onClick="location.href='/fhem?room=Wohnzimmer'"><span>Wohnzimmer</span></a></div></td>
</tr>
<tr><td><div class="menu_Zimmer_Emily"><a onClick="location.href='/fhem?room=Zimmer%20Emily'"><span>Zimmer Emily</span></a></div></td>
</tr>
<tr><td><div class="menu_Zimmer_Hannah"><a onClick="location.href='/fhem?room=Zimmer%20Hannah'"><span>Zimmer Hannah</span></a></div></td>
</tr>
<tr><td><div class="menu_Everything"><a onClick="location.href='/fhem?room=all'"><img class='icon icoEverything' src="/fhem/images/default/icoEverything.png" alt="icoEverything" title="icoEverything">&nbsp;<span>Everything</span></a></div></td>
</tr>
</table></td></tr>
<tr><td><table class="room roomBlock4">
<tr><td><div class="menu_Logfile"><a onClick="location.href='/fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2018-06.log'"><span>Logfile</span></a></div></td>
</tr>
<tr><td><div><a href='/fhem/docs/commandref_DE.html' target="_blank"><span>Commandref</span></a></div></td>
</tr>
<tr><td><div><a href='http://fhem.de/fhem.html#Documentation' target="_blank"><span>Remote doc</span></a></div></td>
</tr>
<tr><td><div class="menu_Edit_files"><a onClick="location.href='/fhem?cmd=style%20list'"><span>Edit files</span></a></div></td>
</tr>
<tr><td><div class="menu_Select_style"><a onClick="location.href='/fhem?cmd=style%20select'"><span>Select style</span></a></div></td>
</tr>
<tr><td><div class="menu_Event_monitor"><a onClick="location.href='/fhem?cmd=style%20eventMonitor'"><span>Event monitor</span></a></div></td>
</tr>
</table></td></tr>
<tr><td><table class="room roomBlock5">
<tr><td><div class="menu_Backup"><a onClick="location.href='/fhem?cmd=backup&fwcsrf=csrf_356080029349866'"><span>Backup</span></a></div></td>
</tr>
</table></td></tr>
</table>
</div>
</div>
<div id="hdr">
<table border="0" class="header"><tr><td style="padding:0">
<form method="post" action="/fhem">
<input type="hidden" name="fw_id" value="667"/>
<input type="hidden" name="fwcsrf" value="csrf_356080029349866"/>
<input type='text' name='cmd' class='maininput' size='40' value='' autocorrect='off' autocapitalize='off'/>
</form>
</td></tr></table>
</div>
</body></html>


Was ich jetzt noch erwähnen sollte. Parallel läuft nextcloud als virtual host. Zusammen mit SSL. Das Zertifikat nutze ich auch für die Location /fhem.
Zitat von: rudolfkoenig am 10 Juni 2018, 17:46:34
Koenntest Du bitte den vom Apache gesendeten HTTP-Header uns zeigen, indem du in FHEM/01_FHEMWEB.pm nach der Zeile 399 Folgende einfuegst:
Log 1, $hash->{HDR};
und FHEM neu startest?
Habe ich an Zeile 400 eingefügt, einen Effekt konnte ich aber nicht erkennen. Die Header die du meintest, sind mir nicht aufgefallen. Ich habe die HTML Ausgaben jeweils vollständig kopiert.

Ich bin immer noch unsicher, ob die ProyxHTMLURLMap Einträge so passen. Aber ich bin mit meinem Latein am Ende. Ich habe diese mehrfach in gleicher Weise gefunden. Oder ist es doch was ganz anderes???  ???

Tipp und Rat ist highly appreciated!!!

Grüße Martin
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

rudolfkoenig

ZitatDas Problem mit den Encoding hatte ich ja schon gelöst.
Das mag sein, aber du hast angedeutet, dass FHEM evtl. was falsch macht ("Fhem ein Encoding nutzt, aber der Apache das nicht erlaubt"), und ich wollte das pruefen.


ZitatHabe ich an Zeile 400 eingefügt, einen Effekt konnte ich aber nicht erkennen.
Der Effekt der eingefuegten Zeile ist, dass alle HTTP Header im FHEM-Log auftauchen.
Kannst du bitte dein FHEM-Log pruefen, und einen Header-Block hier anhaengen?

maddinthebrain

Im Log steht z.B. dieses:
Host: localhost:8083
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
Origin: http://localhost:8083
Sec-WebSocket-Version: 13
User-Agent: Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.84 Safari/537.36
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Sec-WebSocket-Key: Ez2QE6dq9WzOKb7mtNPcWA==
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
2018.06.10 20:56:07 1: GET /fhem?XHR=1&inform=type=status;filter=room=Wetter;since=1528656907.341;fmt=JSON&fw_id=212795×tamp=1528656948010 HTTP/1.1

Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

rudolfkoenig

ZitatUpgrade: websocket
Das klingt doch nach dem bekannten Websocket over Apache-Proxy Problem.
Als Loesung kann man mit "attr WEB longpoll 1" auf HTTP gehen (aktuelle Chrome Versionen haben damit ein Problem), oder in der Apache die Websocket Weiterleitung aktivieren, weiss aber nicht auswendig, wie.

maddinthebrain

"attr WEB longpoll 1" habe ich gemacht, hilft leider nix. Heißt die Direktive vom Apache, deren Namen dir entfallen ist, evtl. ProxyPass aus dem Modul mod_proxy_wstunnel?

Grüße Martin

Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

rudolfkoenig

Weiss nicht, ich habe ja nicht geschrieben, dass es mir entfallen ist. Meine Aussage ist eher als "ich muesste danach suchen, und testen" zu lesen.
Hast du nach "attr WEB longpoll 1" ein richtiges Reload im Browser durchgefuehrt?Ich wuerde erst mit nur ProxyPass und ProxyPassReverse testen, und danach die anderen Apache-Direktiven nach und nach eingeben, um zu lokalisieren, was die Probleme verursacht.

maddinthebrain

So in der fhem.conf steht nun nur noch:

<Location /fhem>
  # ProxyPass/ProxyPassReverse leitet HTTP requests auf eine andere URL um
  ProxyPass "http://localhost:8083/fhem/"
  ProxyPassReverse "http://localhost:8083/fhem/"
  ProxyHTMLEnable On
  # ProxyRequests Off
  # RequestHeader unset Accept-Encoding                                                                     
  SetOutputFilter INFLATE;proxy-html;DEFLATE
  # ProxyHTMLURLMap passt Links im HTML/JavaScript Source an
  # ProxyHTMLURLMap /    /fhem/
  # ProxyHTMLURLMap /fhem/ /fhem/
  AuthType Basic
  AuthName "Password Required"
  AuthUserFile /etc/fhem-htpasswd
  Require valid-user
  Order deny,allow
  Allow from all
</Location>


Ergebnis: keine Änderung. :(  Auf dem Backendserver funktioniert der Zugriff über http://localhost:8083/fhem/ ohne Probleme.

Grüße Martin
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

a-p-s

Hallo,

also ich habe gerade eben bei meiner Konfiguration nachgeschaut. Den Hauptunterschied, den ich sehe, ist, dass ich für bestimmte Dateien den DEFLATE-Filter aktiviert habe (ausgehend)


# Enables outgoing compression for specific file types
<IfModule mod_deflate.c>
<FilesMatch ".*\.(html|htm|shtml|php|css|js|xml|log|txt|bmp|ttf|otf|eot|svg)$">
   SetOutputFilter DEFLATE
</FilesMatch>
    AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE text/xml application/xml application/xhtml+xml text/x-component
    AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript
</IfModule>


Das habe ich im übergeordneten VirtualHost eingefügt.

Mit der Websockets-Unterstützung sieht meine Location-Direktive wie folgt aus:


<Location /fhem>

RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /fhem(.*)       ws://$url$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /fhem(.*)       http://$url$1 [P,L]

# ProxyPass/ProxyPassReverse leitet HTTP requests auf eine andere URL um
ProxyPass http://$url
ProxyPassReverse http://$url

# ProxyHTMLURLMap passt Links im HTML/JavaScript Source an
ProxyHTMLURLMap /        /fhem/
ProxyHTMLURLMap /fhem/   /fhem/

Order deny,allow
Allow from all
</Location>


Authentifizierung ist wie angegeben. Hinzufügen ist, dass da in der Konfiguration noch einiges SSL-Bezogenes bei mir ist und die Let's Encrypt-Unterstützung für die Validierung.

Vielleicht hilft das.

Grüße,
a-p-s


maddinthebrain

Ok, das werde ich probieren.

Was das $url$1 ? Ist das eine Variable? Wie und wo ist die definiert?

Grüße Martin
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

a-p-s

Hallo,

ah, vergessen. Da ich meine Konfiguration (mit noch zig anderen Dingen, die da gehostet sind) mit mod_macro strukturiert habe, ist da noch die Variable drin.

Ersetze einfach $url (und nur das - das bei den Rewrite-Regeln nachfolgende $1 muss bleiben) durch die URL zu deinem FHEM-System (mit /fhem, aber ohne nachfolgenden Slash).

Grüße,
a-p-s

Zitat von: maddinthebrain am 11 Juni 2018, 13:45:19
Ok, das werde ich probieren.

Was das $url$1 ? Ist das eine Variable? Wie und wo ist die definiert?

Grüße Martin

maddinthebrain

#18
@a-p-s: Also es gibt Fortschritte: Nun funktionieren auch die SVG-Plots.

Jedoch was immer noch nicht geht, ist das CSS, lokale im FHEM Ordner abgelegte Bilder, JS geht auch nicht... Ich habe mal ein paar Screenshots angehängt. Der erste wie es über den Apache aussieht. Die Symbole ewig groß. Text in Times New Roman... Und einen wie die Seite eigentlich aussehen soll (lokal aufgerufen). Also ist grad schwierig.

Ich poste jetzt mal die virtualhost conf Datei:

  GNU nano 2.2.6                 Datei: nextcloud-ssl.conf                               Verändert

<VirtualHost *:443>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        SSLEngine on
        <IfModule mod_headers.c>
              Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; pre$
        </IfModule>
                ServerName #############.net
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/#############.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/#############.net/privkey.pem

# Enables outgoing compression for specific file types
        <IfModule mod_deflate.c>
                <FilesMatch ".*\.(html|htm|shtml|php|css|js|xml|log|txt|bmp|ttf|otf|eot|svg)$">
                   SetOutputFilter DEFLATE
                </FilesMatch>
            AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
            AddOutputFilterByType DEFLATE application/rss+xml
            AddOutputFilterByType DEFLATE text/xml application/xml application/xhtml+xml text/x-com$
            AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-java$
        </IfModule>

</VirtualHost>


Die fhem.conf ist nun diese:

<Location /fhem>

  RewriteEngine On
  RewriteCond %{HTTP:Upgrade} =websocket [NC]
  RewriteRule /fhem(.*)       ws://localhost:8083/fhem$1 [P,L]
  RewriteCond %{HTTP:Upgrade} !=websocket [NC]
  RewriteRule /fhem(.*)       http://localhost:8083/fhem$1 [P,L]
 
  # ProxyPass/ProxyPassReverse leitet HTTP requests auf eine andere URL um
  ProxyPass "http://localhost:8083/fhem"
  ProxyPassReverse "http://localhost:8083/fhem"
  ProxyHTMLEnable On
  # ProxyRequests Off
  # RequestHeader unset Accept-Encoding

  SetOutputFilter INFLATE;proxy-html;DEFLATE

  # ProxyHTMLURLMap passt Links im HTML/JavaScript Source an
  ProxyHTMLURLMap / /fhem/
  ProxyHTMLURLMap /fhem/ /fhem/

  AuthType Basic
  AuthName "Password Required"
  AuthUserFile /etc/fhem-htpasswd
  Require valid-user
  Order deny,allow
  Allow from all

</Location>


Die Hoffnung stirbt zuletzt...

EDIT: Also jetzt geht es. Was war die Lösung? Die beiden Einträge von ProxyHTMLURLMap auskommentiert und es funktioniert. Wie kam ich drauf? Im HTML-Code stand halt in den Links etwas oft /fhem/fhem/fhem.... Da dachte ich, ich kommentiere das mal aus. Und siehe da, schon geht's!

Grüße Martin
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren