Apache2 Proxy PHP-FPM -> fehlende Error Seite

  • So, mal wieder direkt eine Frage, vielleicht weiß es einer und ich muss nicht lange suchen....

    die Config:

    Code
    <IfModule mod_proxy_fcgi.c>
        <Proxy "unix:/var/run/php5-fpm-host1.sock|fcgi://host1">
            ProxySet disablereuse=off
        </Proxy>
    
        <FilesMatch ".+\.php$">
            SetHandler proxy:unix:/var/run/php5-fpm-host1.sock|fcgi://host1
        </FilesMatch>
    </IfModule>

    Man beachte also, ich nutze nicht ProxyPassMatch oder ProxyPass oder sonst was, sondern Proxy und SetHandler.

    Das Problem: Bei nicht existierenden PHP-Dateien kommt nicht die eigene Fehlerseite, sondern einfach "File not found."

    Ist aber nur bei php-Dateien. HTML-Dateien lösen die eigene Fehlerseite aus. PHP-Dateien, die per Header 404 selbst einen Fehler auslösen, bringen auch die richtige Fehlerseite.

    So, wie bekomme ich das Ding nun dazu, dass die eigene Fehlerseite kommt? In der vhost conf sind die natürlich definiert und im fpm-Pool auch. Nur dahin kommt man erst gar nicht, wenn die angeforderte PHP-Datei nicht existiert, denn der Proxy bricht direkt ab. Die Meldung "File not found." ist auch vom Proxy.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • So, Problem hat sich erledigt bzw. ist umgangen. Und Alex, nicht wieder über Debian lachen, denn das Problem besteht auch bei Ubuntu ;) Es ist ein Bug im Apache, der schon seit 2014 bekannt ist.

    ProxyErrorOverride ist schon der richtige Weg, aber da ist eben auch genau der Bug. Wenn die Direktive greift, dann leitet er über den Proxy durch, ruft das eigene Error-File ab, verwirft die Antwort, bekommt einen neuen Fehlerstatus und leitet dann wieder über den Proxy. Das macht er dann 10mal, bis der maximale Loop erreicht ist, dann kommt der Fehler 500.

    Umgangen werden kann es mit dem Bug nur, wenn das ErrorFile in einem Unterordner liegt und man für den Unterordner ProxyErrorOverride deaktiviert. Dann greift er nur einmal drauf zu und beendet es dann bzw. zeigt die Seite an ;)

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(