Der Proxy für den mp3 Feed funktioniert sehr gut. Das Herunterladen der mp3-Dateien klappt gut, da der Podcast ein CDN verwendet. Die Shownotes werden in Podcast Addict per Android Webview dargestellt, und dieses hat auf meinem Huawei P9 kein Problem mit secp384r1 bei ECDH Chiffren. Nur das initiale Coverart Bild im Feed wird auch per interner URL Routine heruntergeladen.

Damit dieses Bild und die Episoden Bilder auch per Proxy heruntergeladen werden, muss der Inhalt des mp3 Feeds verändert werden. Da es sich nicht um HTML sondern um eine XML Datei handelt, kann man nicht den Mod „proxy_html“ verwenden sondern muss auf den Mod „substitute“ ausweichen.

Nachdem man mittels

a2enmod substitute

das Modul geladen hat kann man innerhalb von <Location …> damit arbeiten. Es ist zu beachten das wirklich jede Stelle ersetzt wird und das die Substitution nur auf die XML Datei des Feeds angewandt wird.

<Location "/podcast-ssl-problem/feed/mp3">
 SetOutputFilter INFLATE;SUBSTITUTE;DEFLATE
 AddOutputFilterByType SUBSTITUTE text/xml
 Substitute "s|https://problempodcast.de/wp-content/cache/|https://URL/podcast-ssl-problem/cache/|inq"
 ProxyPassReverse /
</Location>

Durch „SetOutputFilter“ wird die für die Übertragung komprimierte Datei, entpackt, verändert und wieder komprimiert.  Als Alternative könnte man auch

RequestHeader unset Accept-Encoding

setzten. Allerdings wird die XML Feed Datei dann nicht komprimiert übertragen.

Durch „AddOutputFilterByType“ werden nur Dateien verändert die als Type „text/xml“ haben. Normalerweise sollte in der <Location …> sowieso nichts anders vorkommen, aber man weiß ja nie.

Die Syntax von Substitute ist sehr ähnlich zu der von sed. Nach dem ersten Teil wird gesucht und mit dem zweiten Teil ersetzt. Die Option i am Ende bedeutet das Groß- und Kleinschreibung beachtet wird, n sucht nur nach dem Muster und verwendetet keine regulären Ausdrücke. Die Option q kann die Operation ein wenig beschleunigen.

Am Schluss sollte man nicht vergessen die Bilder auch per Reverse Proxy zugänglich zu machen.

ProxyPass "/podcast-ssl-problem/cache/" "https://problempodcast.de/wp-content/cache/"
ProxyPassReverse "/podcast-ssl-problem/cache/" "https://problempodcast.de/wp-content/cache/"

<Location "/podcast-ssl-problem/cache/">
 ProxyPassReverse /
</Location>
Apache Mod Substitute bei einem Reverse Proxy