[Solved] Episoden-Download nicht möglich, hören schon

Hallo!

Ein Hörer meines Podcasts hat mich gestern darauf hingewiesen, dass mit Pocketcasts keine Episoden mehr herunterladen kann. (Es ging bis vor kurzem auch noch)

Ich hab mir das ganze dann genauer angeschaut, und bin auf das Folgende Verhalten gestoßen, dass ich mir nicht so recht erklären kann:

  • Sowohl Pocketcasts als auch Castbox (die beiden hab ich getestet) können keine meiner Episoden herunterladen. Die Fehlermeldung in der App ist leider nicht hilfreich, auf die von Wordpress habe ich gerade keinen Zugriff
  • Man kann die Episoden in den Apps aber trotzdem ganz normal anhören, es ist also kein Fehler in der Bereitstellung der Mediendaten. Das habe ich auch nochmal zusätzlich validiert.

Hatte jemand schon einmal ein ähnliches Problem, oder einen Ansatzpunkt was ich versuchen könnte?

Wordpress-Version ist 5.2.2
Podlove Publisher: 2.8.9

Was sagt denn die Fehlermeldung in der App?

Nur “Episode kann nicht heruntergeladen werden. Wende dich an den Podcastautor”.

Da er die fraglichen Folgen aber abspielt, dürfte es sich nicht um einen Fehler beim ausliefernden Server selbst handeln.

Mittlerweile habe ich die Zeit gefunden um mal auf den Server zu schauen. Interessanterweise funktionieren Downloads unregelmäßig…

Aber besonders stutzig machen mich die folgenden Log-Meldungen (die erste taucht 16 mal auf):

[12-Jul-2019 14:59:30 UTC] PHP Notice:  wp_enqueue_style was called <strong>incorrectly</strong>. Scripts and styles should not be registered or enqueued until the <code>wp_enqueue_scripts</code>, <code>admin_enqueue_scripts</code>, or <code>login_enqueue_scripts</code> hooks. Please see <a href="https://codex.wordpress.org/Debugging_in_WordPress">Debugging in WordPress</a> for more information. (This message was added in version 3.3.0.) in /var/www/virtual/coastercast.de/htdocs/wordpress/wp-includes/functions.php on line 4773
[12-Jul-2019 14:59:30 UTC] PHP Notice:  Undefined index: HTTP_X_REAL_IP in /var/www/virtual/coastercast.de/htdocs/wordpress/wp-content/plugins/podlove-podcasting-plugin-for-wordpress/includes/downloads.php on line 17
[12-Jul-2019 14:59:30 UTC] PHP Notice:  Undefined index: HTTP_X_FORWARDED_FOR in /var/www/virtual/coastercast.de/htdocs/wordpress/wp-content/plugins/podlove-podcasting-plugin-for-wordpress/includes/downloads.php on line 20

EDIT:
Mein Apache Access-log gibt mir insbesondere diese Logmeldungen aus (die auftreten, nachdem ich ein einziges mal auf die Resource mit meinem Browser zugreife):

[12/Jul/2019:17:26:18 +0200] "GET /002_meineReise.mp3?ptm_source=feed&ptm_context=mp3&ptm_request=434e2c64a4ae&ptm_file=002_meineReise.mp3 HTTP/2.0" 421 322 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.102 Safari/537.36 Vivaldi/2.6.1566.44"
[12/Jul/2019:17:26:18 +0200] "GET /002_meineReise.mp3?ptm_source=feed&ptm_context=mp3&ptm_request=434e2c64a4ae&ptm_file=002_meineReise.mp3 HTTP/2.0" 200 7030893 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.102 Safari/537.36 Vivaldi/2.6.1566.44"

d.h. Anfragen im Browser funktionieren, weil dieser nach einem fehlgeschlagenem Request einen weiteren Versuch startet, der aus $GRÜNDEN erfolgreich ist.

Fürs Archiv: Ich konnte das Problem inzwischen beheben.

Das Knackpunkt war wohl, dass meine CDN-Subdomain auf dem gleichen (physikalischen) Server lag und die HTTP/2.0 Verbindung weiterverwendet wurde.

Gelöst wurde das ganze, indem für die Subdomain ein eigenes Zertifikat eingetragen wurde (zuvor hatten coastercast.de, www.coastercast.de und cdn.coastercast.de das gleiche). Hierdurch werden Clients gezwungen, eine neue Verbindung aufzubauen und landen dann auch auf dem richtigen virtuellen Host.