Ich habe hier eine FHEM Installation, die Apache als Proxy/ReverseProxy verwendet. Das funktioniert auch alles soweit, allerdings gibt es ein eigenartiges Verhalten wenn ich FHEM Files in der FHEMWEB Oberfläche im Browser öffne. Sobald die Files irgendetwas enthalten, das wie HTML aussieht z.B. "<IN>" in den gplot Files, dann wird der Inhalt des Files im Browser verändert. Das sieht für mich so aus, als ob der Apache oder wer auch immer, das als HTML interpretiert und versucht zu "reparieren", indem er z.B. "</in>" ans Ende setzt und alles, was in "<>" steht in Kleinbuchstaben wandelt.
Als Beispiel hier mal ein Screenshot des FHEM Editors für ein Standard Gplot File.
Das passiert nur, wenn http über den Apache läuft, wenn ich mich per VPN auf den Server einlogge und auf die lokalen Adressen gehe, ist alles OK, die Files selbst enthalten die Anhängsel natürlich nicht.
Hat irgendjemand eine Idee was da los ist?
Wie sieht die Config Deines Proxys aus?
Benutzt du in der Proxy Config ProxyHTMLDocType (http://httpd.apache.org/docs/current/mod/mod_proxy_html.html#proxyhtmldoctype)?
ZitatIf the first form is used, mod_proxy_html will also clean up the HTML to the specified standard. It cannot fix every error, but it will strip out bogus elements and attributes. It will also optionally log other errors at LogLevel Debug.
<VirtualHost *:80>
ServerName Domain
RedirectPermanent / https://Domain/
RewriteEngine on
RewriteCond %{SERVER_NAME} = Domain
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<VirtualHost *:443>
ServerName Domain
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:EC...
SSLHonorCipherOrder on
SSLCompression off
SSLOptions +StrictRequire
#Use RootDir /var/www/fhemweb # hier sollte ein V...
ProxyPass /.well-known !
Alias /.well-known "/var/www/proxy/.well-known"
<Directory "/var/www/fhemweb/.well-known">
order allow,deny
allow from all
AllowOverride All
AddDefaultCharset Off
</Directory>
RewriteEngine on
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /fhem(.*) ws://localhost:2019/fhem$1 [P]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /fhem(.*) http://localhost:2019/fhem$1 [P]
ProxyRequests Off
ProxyVia Off
ProxyPreserveHost Off
ProxyPass /fhem http://Hostname:2019/fhem
ProxyPassReverse /fhem http://Hostname:2019/fhem
#Header always set Strict-Transport-Security "max-age=31536000"
<Proxy *>
Order deny,allow
Allow from all
AuthType Basic
AuthName "Password Required"
AuthUserFile /etc/fhem-htpasswd
Require valid-user
</Proxy>
SetOutputFilter INFLATE;proxy-html;DEFLATE
SSLCertificateFile /etc/letsencrypt/live/Domain/fuLachanfall.pem
SSLCertificateKeyFile /etc/letsencrypt/live/Domain/prIckes.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
Einige Zeilen sind gekürzt, der richtige Domainname ist durch "Domain" bzw. der richtige Hostnamen durch "Hostnamen" ersetzt.
Wie sieht die Konfiguration von mod_proxy_html aus?
Bin jetzt nicht sooo tief im apache, aber könnte es "SetOutputFilter" sein?
https://httpd.apache.org/docs/2.4/filter.html (https://httpd.apache.org/docs/2.4/filter.html)
Und der Inhalt von Include /etc/letsencrypt/options-ssl-apache.conf
Zitat von: Christoph Morrison am 26 Mai 2020, 21:39:24
Wie sieht die Konfiguration von mod_proxy_html aus?
ProxyHTMLLinks a href
ProxyHTMLLinks area href
ProxyHTMLLinks link href
ProxyHTMLLinks img src longdesc usemap
ProxyHTMLLinks object classid codebase data usemap
ProxyHTMLLinks q cite
ProxyHTMLLinks blockquote cite
ProxyHTMLLinks ins cite
ProxyHTMLLinks del cite
ProxyHTMLLinks form action
ProxyHTMLLinks input src usemap
ProxyHTMLLinks head profile
ProxyHTMLLinks base href
ProxyHTMLLinks script src for
Der Rest ist auskommentiert.
Hast du testweise den Filter für proxy-html mal ausgeschaltet um eingrenzen zu können ob es an mod_proxy_html liegt? Deflate/Inflate machen sowas sicher nicht.
Es sieht so aus als würde das Markup irgendwie "repariert" werden.
Was mich stutzig macht an dem was du gepostet hast, ist, dass der Filter ohne ProxyHTMLEnable gar nicht funktionieren würde, d.h. es muss irgendwo noch mehr Config geben. grep mal nach ProxyHTML in /etc/apache2 - vielleich ist noch in einer anderen Config was.
Ich würde auch so vergehen:
Mal einiges Auskommentieren und prüfen, ob es dann noch geht bzw. eventuell der Fehler "weg" ist ....