Contao-Camp 2024
Ergebnis 1 bis 19 von 19

Thema: Contao 4.13 ruft Backend-Assets per http auf

  1. #1
    Contao-Nutzer
    Registriert seit
    09.05.2022.
    Beiträge
    19

    Standard Contao 4.13 ruft Backend-Assets per http auf

    Hallo in die Runde,

    Ich bräuchte mal bitte eure Hilfe, da ich nicht weiter komme.

    Ich habe einen Ubuntu 20.04 Server als Arbeitsumgebung zur Installation vom Contao 4.13. auf dem ich Vollzugriff habe. Dazwischen hängt noch ein Reverse-Proxy auf dem ich kein Zugriff habe.
    Das Contao ist bereits installiert.

    Allerdings habe ich jetzt das Problem, dass wenn ich versuche das Backend aufzurufen, versucht das Contao seine Assets über http anstatt https aufzurufen.
    Das führt natürlich zu einen Mixed Content Fehler im Browser was die Lauffähigkeit des Backends nicht ermöglicht.

    Jetzt die Frage: Was kann ich tun? Kann ich serverseit noch was einstellen, was das Contao zwingt immer über https zu gehen?

    Die htaccess Datei habe ich bereits angepasst um https zu erzwingen. Hat aber leider keine Wirkung.

    Zwei Infos die vielleicht noch hilfreich sein könnte:
    1. Es gab zu Beginn der Installation ein Problem mit dem Proxy. So wurde seites vom Server versucht die Assets über die interne IP des Servers zu laden. Nach einer Anpassung vom Verantwortlichen war das Problem mit der IP behoben. Auf die Frage, das mit dem http/https vielleicht vom Proxy ausgeht wurde verneint.

    2. Das Installtool läd die die Assets sauber über https.

    Hat jemand eine Idee?

    Ich bedanke mich für eure Hilfe

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Zitat Zitat von Lorello Beitrag anzeigen
    Dazwischen hängt noch ein Reverse-Proxy auf dem ich kein Zugriff habe.
    Du musst die IP des Proxy in die TRUSTED_PROXIES Umgebungsvariable einfügen.
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Contao-Nutzer
    Registriert seit
    09.05.2022.
    Beiträge
    19

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Du musst die IP des Proxy in die TRUSTED_PROXIES Umgebungsvariable einfügen.
    Darf ich fragen, an welcher Stelle ich das machen muss? Ich stecke in der Serverkonfig nicht so tief drin.

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Das kannst du entweder als richtige Umgebungsvariable umsetzen - oder in der .env bzw. .env.local Datei deiner Contao Installation.
    » sponsor me via GitHub or PayPal or Revolut

  5. #5
    Contao-Nutzer
    Registriert seit
    09.05.2022.
    Beiträge
    19

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Das kannst du entweder als richtige Umgebungsvariable umsetzen - oder in der .env bzw. .env.local Datei deiner Contao Installation.
    Ich konnte https_proxy mit dem entsprechenden Wert als enviroment setzen können. Leider hat dies nicht zum gewünschten Erfolg geführt.

    Die env Datei soll im Root der Contao Installation liegen. Aktuell gibt es diese bei mir nicht. Ich geh davon aus, dass ich diese einfach anlegen kann. Richtig?

    Wie lautet die Syntax für die Proxy Konfiguration für die env Datei?

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Zitat Zitat von Lorello Beitrag anzeigen
    Ich konnte https_proxy mit dem entsprechenden Wert als enviroment setzen können.
    Die Umgebungsvariable heißt TRUSTED_PROXIES. Siehe https://docs.contao.org/dev/referenc...rusted-proxies



    Zitat Zitat von Lorello Beitrag anzeigen
    Die env Datei soll im Root der Contao Installation liegen. Aktuell gibt es diese bei mir nicht. Ich geh davon aus, dass ich diese einfach anlegen kann. Richtig?
    Korrekt, ja.



    Zitat Zitat von Lorello Beitrag anzeigen
    Wie lautet die Syntax für die Proxy Konfiguration für die env Datei?
    Code:
    TRUSTED_PROXIES=123.123.123.123
    Siehe https://symfony.com/doc/current/depl...ges-constantly
    » sponsor me via GitHub or PayPal or Revolut

  7. #7
    Contao-Nutzer
    Registriert seit
    09.05.2022.
    Beiträge
    19

    Standard

    Tut mir leid funktioniert leider nichts.
    Das Backend ruft die Assets nach wie per http auf :-(

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Poste Inhalt und Pfad deiner .env bzw. .env.local
    » sponsor me via GitHub or PayPal or Revolut

  9. #9
    Contao-Nutzer
    Registriert seit
    09.05.2022.
    Beiträge
    19

    Standard

    HTML-Code:
    TRUSTED_PROXIES=172.20.1.180
    TRUSTED_HOSTS='^(localhost|neu.xxx\.de)$'
    Kann man noch ne Port dranhängen? Vielleicht liegts ja daran?

  10. #10
    Contao-Nutzer
    Registriert seit
    09.05.2022.
    Beiträge
    19

    Standard

    Ich habe die Konfiguration serverseitig auf der Konsole mal getestet.

    wenn ich wget http://neu.eins.de/assets/js/mootool...js-9c593538.js mache,
    schreibt er automatisch auf https um
    dann:
    HTML-Code:
        Connecting to 172.xxx:xxx... connected
        Proxy Request send, awaiting response... 200 ok
    Dann erkennt er was er was es für ne Datei ist usw.. und versucht diese runterzuladen.

    Die Proxykonfiguration vom Server scheint also zu stimmen.

    Die Frage ist ob der Apache dies nun automatisch nutzt oder ob ich vielleicht dort noch expliziet einbauen muss?

  11. #11
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Die Angabe von TRUSTED_PROXIES ist dann nötig, wenn der Proxy Server mit dem Web Server nicht über HTTPS kommuniziert. In diesem Fall muss der Proxy Server den Request mit den richtigen Request Headern an den Web Server weiterleiten (X-Forwarded-For etc.). Über die TRUSTED_PROXIES Umgebungsvariable prüft Contao/Symfony dann für den Fall, dass der Request unverschlüsselt kommt, ob der Request von deinem Proxy Server kommt - und falls ja wird den entsprechenden Request Headern (X-Forwarded-For etc.) vertraut und Contao/Symfony ermittelt über diese Request Header, ob der ursprüngliche Request an den Proxy Server verschlüsselt war oder nicht.
    » sponsor me via GitHub or PayPal or Revolut

  12. #12
    Contao-Nutzer
    Registriert seit
    09.05.2022.
    Beiträge
    19

    Standard

    Hm ok, naja die Anfragen scheinen alle über https zu laufen.

    Anderer Ansatz:
    Mit ist aufgefallen, dass das Contao Backend eine Base Href setzt. In dem Fall mit http.

    Beim Installtool wird keine Base Href gesetzt. Daher passt die Serverkonfig, weil er die Anfragen automatisch auf https setzt.

    Wenn das Backend nun explizit die Base Href über http läuft, werden die Anfragen an sich selbst natürlich auch über http laufen.

    Jetzt die Preisfrage: Kann man das ändern?

    Ich hab was gefunden, dass man in der localconfig folgendens setzen kann:

    HTML-Code:
    $GLOBALS['TL_CONFIG']['proxyServerIps'] = 'xxx.xxx.xxx.xxx.';
    $GLOBALS['TL_CONFIG']['sslProxyDomain] = 'xyz';
    Die Config greift aktuell nicht.
    Gibt es eine andere Möglichkeit die Base Href zu ändern?

  13. #13
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Zitat Zitat von Lorello Beitrag anzeigen
    Hm ok, naja die Anfragen scheinen alle über https zu laufen.
    Zum Proxy, ja. Aber der Proxy selbst kommuniziert dann nicht mehr über HTTPS mit dem Web Server.


    Zitat Zitat von Lorello Beitrag anzeigen
    Mit ist aufgefallen, dass das Contao Backend eine Base Href setzt. In dem Fall mit http.
    Genau, weil nicht erkannt wird/werden kann, dass ursprünglich mit HTTPS kommuniziert wurde.


    Zitat Zitat von Lorello Beitrag anzeigen
    Jetzt die Preisfrage: Kann man das ändern?
    Über TRUSTED_PROXIES - vorausgesetzt der Proxy selbst hält sich an die gängigen Standards.
    » sponsor me via GitHub or PayPal or Revolut

  14. #14
    Contao-Nutzer
    Registriert seit
    09.05.2022.
    Beiträge
    19

    Standard

    Hm da die ganzen Anpassungen nix bewirken, habe ich eine unsaubere Variante verbaut. Ich habe das Login und Backend Template manipuliert und erzwinge in der Base Href Angabe das https.

    Das bringt mich zumindest erstmal weiter.
    Dafür habe ich nun ein neues Problem.

    Klicke ich z.b. auf Artikel, erhalte ich einen Fehler "Call to a member function getAttribute() on null"

    Dieser wird in der Datei "/vendor/contao/imagine-svg/src/Image.php" Zeite 358 . Geworfen.

    Fehlt hier serverseitig eine Bibliothek?

  15. #15
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Zitat Zitat von Lorello Beitrag anzeigen
    Hm da die ganzen Anpassungen nix bewirken, habe ich eine unsaubere Variante verbaut. Ich habe das Login und Backend Template manipuliert und erzwinge in der Base Href Angabe das https.
    Würde ich so nicht machen . Du könntest mal überprüfen, welche Request Header der Proxy an den Web Server sendet.



    Zitat Zitat von Lorello Beitrag anzeigen
    Dafür habe ich nun ein neues Problem.

    Klicke ich z.b. auf Artikel, erhalte ich einen Fehler "Call to a member function getAttribute() on null"

    Dieser wird in der Datei "/vendor/contao/imagine-svg/src/Image.php" Zeite 358 . Geworfen.

    Fehlt hier serverseitig eine Bibliothek?
    Nutze den Debug-Modus und poste den Stack Trace. Sieht nach einem ungültigen SVG aus.
    » sponsor me via GitHub or PayPal or Revolut

  16. #16
    Contao-Nutzer
    Registriert seit
    09.05.2022.
    Beiträge
    19

    Standard

    Ja ich weiss.. aber mir fehlt leider etwas die Zeit um dort noch weiter zu basteln. Der Server und der Apache arbeiten, scheinbar, so wie sie sollen..

    Hier der Stack Trace

    HTML-Code:
    ErrorException:
    Notice: Undefined property: DOMDocument::$documentElement
    
      at vendor/symfony/routing/Loader/XmlFileLoader.php:58
      at Symfony\Component\Routing\Loader\XmlFileLoader->load()
         (vendor/contao/manager-bundle/src/ContaoManager/Plugin.php:149)
      at Contao\ManagerBundle\ContaoManager\Plugin->getRouteCollection()
         (vendor/contao/manager-bundle/src/Routing/RouteLoader.php:49)
      at Contao\ManagerBundle\Routing\RouteLoader->Contao\ManagerBundle\Routing\{closure}()
      at array_reduce()
         (vendor/contao/manager-bundle/src/Routing/RouteLoader.php:57)
      at Contao\ManagerBundle\Routing\RouteLoader->loadFromPlugins()
         (vendor/symfony/routing/Loader/ObjectLoader.php:62)
      at Symfony\Component\Routing\Loader\ObjectLoader->load()
         (vendor/symfony/config/Loader/DelegatingLoader.php:40)
      at Symfony\Component\Config\Loader\DelegatingLoader->load()
         (vendor/symfony/framework-bundle/Routing/DelegatingLoader.php:70)
      at Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader->load()
         (vendor/symfony/framework-bundle/Routing/Router.php:68)
      at Symfony\Bundle\FrameworkBundle\Routing\Router->getRouteCollection()
         (vendor/symfony/routing/Router.php:361)
      at Symfony\Component\Routing\Router->getMatcherDumperInstance()
         (vendor/symfony/routing/Router.php:289)
      at Symfony\Component\Routing\Router->Symfony\Component\Routing\{closure}()
         (vendor/symfony/config/ResourceCheckerConfigCacheFactory.php:39)
      at Symfony\Component\Config\ResourceCheckerConfigCacheFactory->cache()
         (vendor/symfony/routing/Router.php:297)
      at Symfony\Component\Routing\Router->getMatcher()
         (vendor/symfony/routing/Router.php:251)
      at Symfony\Component\Routing\Router->matchRequest()
         (vendor/symfony-cmf/routing/src/ChainRouter.php:188)
      at Symfony\Cmf\Component\Routing\ChainRouter->doMatch()
         (vendor/symfony-cmf/routing/src/ChainRouter.php:158)
      at Symfony\Cmf\Component\Routing\ChainRouter->matchRequest()
         (vendor/symfony/http-kernel/EventListener/RouterListener.php:111)
      at Symfony\Component\HttpKernel\EventListener\RouterListener->onKernelRequest()
         (vendor/symfony/event-dispatcher/Debug/WrappedListener.php:117)
      at Symfony\Component\EventDispatcher\Debug\WrappedListener->__invoke()
         (vendor/symfony/event-dispatcher/EventDispatcher.php:230)
      at Symfony\Component\EventDispatcher\EventDispatcher->callListeners()
         (vendor/symfony/event-dispatcher/EventDispatcher.php:59)
      at Symfony\Component\EventDispatcher\EventDispatcher->dispatch()
         (vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php:154)
      at Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher->dispatch()
         (vendor/symfony/http-kernel/HttpKernel.php:128)
      at Symfony\Component\HttpKernel\HttpKernel->handleRaw()
         (vendor/symfony/http-kernel/HttpKernel.php:74)
      at Symfony\Component\HttpKernel\HttpKernel->handle()
         (vendor/symfony/http-kernel/Kernel.php:202)
      at Symfony\Component\HttpKernel\Kernel->handle()
         (web/index.php:44)                

  17. #17
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.060
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Erfahrungsgemäß fällt einem bei solchen Aktionen die vermeintlich dadurch eingesparte Zeit dann irgendwann später doppelt und dreifach auf die Füsse. Ich hoffe, das bleibt dir erspart.

  18. #18
    Contao-Nutzer
    Registriert seit
    09.05.2022.
    Beiträge
    19

    Standard

    Zitat Zitat von tab Beitrag anzeigen
    Erfahrungsgemäß fällt einem bei solchen Aktionen die vermeintlich dadurch eingesparte Zeit dann irgendwann später doppelt und dreifach auf die Füsse. Ich hoffe, das bleibt dir erspart.
    Yo danke. Wird sich zeigen...

  19. #19
    Contao-Nutzer
    Registriert seit
    09.05.2022.
    Beiträge
    19

    Standard

    Zitat Zitat von Lorello Beitrag anzeigen
    Ja ich weiss.. aber mir fehlt leider etwas die Zeit um dort noch weiter zu basteln. Der Server und der Apache arbeiten, scheinbar, so wie sie sollen..

    Hier der Stack Trace

    HTML-Code:
    ErrorException:
    Notice: Undefined property: DOMDocument::$documentElement
    
      at vendor/symfony/routing/Loader/XmlFileLoader.php:58
      at Symfony\Component\Routing\Loader\XmlFileLoader->load()
         (vendor/contao/manager-bundle/src/ContaoManager/Plugin.php:149)
      at Contao\ManagerBundle\ContaoManager\Plugin->getRouteCollection()
         (vendor/contao/manager-bundle/src/Routing/RouteLoader.php:49)
      at Contao\ManagerBundle\Routing\RouteLoader->Contao\ManagerBundle\Routing\{closure}()
      at array_reduce()
         (vendor/contao/manager-bundle/src/Routing/RouteLoader.php:57)
      at Contao\ManagerBundle\Routing\RouteLoader->loadFromPlugins()
         (vendor/symfony/routing/Loader/ObjectLoader.php:62)
      at Symfony\Component\Routing\Loader\ObjectLoader->load()
         (vendor/symfony/config/Loader/DelegatingLoader.php:40)
      at Symfony\Component\Config\Loader\DelegatingLoader->load()
         (vendor/symfony/framework-bundle/Routing/DelegatingLoader.php:70)
      at Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader->load()
         (vendor/symfony/framework-bundle/Routing/Router.php:68)
      at Symfony\Bundle\FrameworkBundle\Routing\Router->getRouteCollection()
         (vendor/symfony/routing/Router.php:361)
      at Symfony\Component\Routing\Router->getMatcherDumperInstance()
         (vendor/symfony/routing/Router.php:289)
      at Symfony\Component\Routing\Router->Symfony\Component\Routing\{closure}()
         (vendor/symfony/config/ResourceCheckerConfigCacheFactory.php:39)
      at Symfony\Component\Config\ResourceCheckerConfigCacheFactory->cache()
         (vendor/symfony/routing/Router.php:297)
      at Symfony\Component\Routing\Router->getMatcher()
         (vendor/symfony/routing/Router.php:251)
      at Symfony\Component\Routing\Router->matchRequest()
         (vendor/symfony-cmf/routing/src/ChainRouter.php:188)
      at Symfony\Cmf\Component\Routing\ChainRouter->doMatch()
         (vendor/symfony-cmf/routing/src/ChainRouter.php:158)
      at Symfony\Cmf\Component\Routing\ChainRouter->matchRequest()
         (vendor/symfony/http-kernel/EventListener/RouterListener.php:111)
      at Symfony\Component\HttpKernel\EventListener\RouterListener->onKernelRequest()
         (vendor/symfony/event-dispatcher/Debug/WrappedListener.php:117)
      at Symfony\Component\EventDispatcher\Debug\WrappedListener->__invoke()
         (vendor/symfony/event-dispatcher/EventDispatcher.php:230)
      at Symfony\Component\EventDispatcher\EventDispatcher->callListeners()
         (vendor/symfony/event-dispatcher/EventDispatcher.php:59)
      at Symfony\Component\EventDispatcher\EventDispatcher->dispatch()
         (vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php:154)
      at Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher->dispatch()
         (vendor/symfony/http-kernel/HttpKernel.php:128)
      at Symfony\Component\HttpKernel\HttpKernel->handleRaw()
         (vendor/symfony/http-kernel/HttpKernel.php:74)
      at Symfony\Component\HttpKernel\HttpKernel->handle()
         (vendor/symfony/http-kernel/Kernel.php:202)
      at Symfony\Component\HttpKernel\Kernel->handle()
         (web/index.php:44)                


    Für alle die es interessiert. Ich bin über ein anderes Forum auf einen Lösungsvorschlag gekommen. Ich habe in der php.ini die dom.so Extension auskommentiert und den Apachen neu gestartet. Dann ging auf einmal alles.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •