Debian 11, Apache2, eigene Fehlerseite (ERROR 404 etc)

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
Exxter
Beiträge: 383
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Debian 11, Apache2, eigene Fehlerseite (ERROR 404 etc)

Beitrag von Exxter » 24.02.2022 12:57:31

Hallo,

eigentlich sollte das kein großes Ding sein, dachte ich ... ich möchte unter Debian 11 und Apache2 eigene Fehlerseiten hinzufügen in der Hoffnung, dass diese Seiten dann in jedem Browser ordentlich und identisch aussehen. Zum Test habe ich erstmal in die sites-available/000-default.conf folgendes (ErrorDocument) hinzugefügt:

Code: Alles auswählen

root@example:/etc/apache2$ cat sites-available/000-default.conf|grep -v '#'
<VirtualHost *:80>
        ServerName example.org

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/public

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory /var/www/html>
        Options All
        AllowOverride All
        Require all granted
ErrorDocument 500 "Das Formular wurde entfernt."
ErrorDocument 404 "Das Formular wurde entfernt."
ErrorDocument 502 "Das Formular wurde entfernt."
ErrorDocument 400 "Das Formular wurde entfernt."
ErrorDocument 504 "Das Formular wurde entfernt."
    </Directory>

RewriteEngine on
RewriteCond %{SERVER_NAME} =example.org
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

root@example:/etc/apache2$
Dabei ändert sich aber keine Ausgabe. Ich teste das, in dem ich auf https://example.org/gibtsicht gehe. Auch mit
echo -en "GET /foo HTTP/1.0\n\n" | nc 127.0.0.1 80
kann man es testen, da kommt:

Code: Alles auswählen

root@example:/etc/apache2$ echo -en "GET /foo HTTP/1.0\n\n" | nc 127.0.0.1 80
HTTP/1.1 400 Bad Request
Date: Thu, 24 Feb 2022 11:32:45 GMT
Server: Apache/2.4.52 (Debian)
Content-Length: 306
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.52 (Debian) Server at example.org Port 80</address>
</body></html>
root@example:/etc/apache2$
In der Log steht dann:

Code: Alles auswählen

127.0.0.1 - - [24/Feb/2022:12:46:39 +0100] "GET /foo HTTP/1.0\n" 400 488 "-" "-" 
Oder über den Firefox von extern:

Code: Alles auswählen

80.xxx.xxx.xxx - - [24/Feb/2022:12:52:00 +0100] "GET /gibtsicht HTTP/1.1" 500 770 "-" "Mozilla/5. ....
Ich habe gefunden, dass die Apache Module mod_alias, mod_include und mod_negotiation aktiv sein müssen, das sind sie. Der Apache ist auf Lets Ecrypt eingerichtet, alle Aufrufe werden auf 443 umgeleitet.

Auch in die SSL-Config habe ich es eingetragen:

Code: Alles auswählen

root@example:/etc/apache2$ cat sites-enabled/000-default-le-ssl.conf|grep -v '#'
<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName example.org

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/public

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory /var/www/html>
        Options All
        AllowOverride All
        Require all granted
ErrorDocument 500 "Das Formular wurde entfernt."
ErrorDocument 404 "Das Formular wurde entfernt."
ErrorDocument 502 "Das Formular wurde entfernt."
ErrorDocument 503 "Das Formular wurde entfernt."
ErrorDocument 504 "Das Formular wurde entfernt."
    </Directory>

SSLCertificateFile /etc/letsencrypt/live/example.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.org/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
root@example:/etc/apache2$
Hat jemand eine Idee, was ich übersehe?

Vielleicht noch wichtig, das ist eine VM auf der nur eine einzige Seite läuft direkt im DocumentRoot. Die Konfiguration ist bis auf obige Dateien noch ziemlich Standard.

DeletedUserReAsG

Re: Debian 11, Apache2, eigene Fehlerseite (ERROR 404 etc)

Beitrag von DeletedUserReAsG » 24.02.2022 13:20:51

httpd wurde neu geladen? vHosts überhaupt aktiv (i.e. auch in sites-enabled/ wer lesen kann – zumindest der ssl-vhost wird ja auch sites-enabled heraus gezeigt)? Request wird von einer früher greifenden Konfiguration abgedeckt, so dass der vHost mit den Änderungen gar nicht zum Zug kommt?

OT: „Formular wurde entfernt“ passt nicht zu den 5xx-Statuscodes.

Exxter
Beiträge: 383
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Re: Debian 11, Apache2, eigene Fehlerseite (ERROR 404 etc)

Beitrag von Exxter » 24.02.2022 13:34:58

niemand hat geschrieben: ↑ zum Beitrag ↑
24.02.2022 13:20:51
httpd wurde neu geladen? vHosts überhaupt aktiv (i.e. auch in sites-enabled/ wer lesen kann – zumindest der ssl-vhost wird ja auch sites-enabled heraus gezeigt)? Request wird von einer früher greifenden Konfiguration abgedeckt, so dass der vHost mit den Änderungen gar nicht zum Zug kommt?

OT: „Formular wurde entfernt“ passt nicht zu den 5xx-Statuscodes.
Apache2 habe ich mehrmals neu gestartet. vHosts aktiv:

Code: Alles auswählen

root@example:/etc/apache2$ ls -al sites-enabled/
insgesamt 8
drwxr-xr-x 2 root root 4096 24. Feb 12:06 .
drwxr-xr-x 8 root root 4096 24. Feb 12:45 ..
lrwxrwxrwx 1 root root   35  4. Aug 2020  000-default.conf -> ../sites-available/000-default.conf
lrwxrwxrwx 1 root root   52  4. Aug 2020  000-default-le-ssl.conf -> /etc/apache2/sites-available/000-default-le-ssl.conf
root@example:/etc/apache2$ ls -al conf-enabled/
insgesamt 8
drwxr-xr-x 2 root root 4096 24. Feb 11:55 .
drwxr-xr-x 8 root root 4096 24. Feb 12:45 ..
lrwxrwxrwx 1 root root   30  4. Aug 2020  charset.conf -> ../conf-available/charset.conf
lrwxrwxrwx 1 root root   40 30. Aug 11:15 javascript-common.conf -> ../conf-available/javascript-common.conf
lrwxrwxrwx 1 root root   44  4. Aug 2020  localized-error-pages.conf -> ../conf-available/localized-error-pages.conf
lrwxrwxrwx 1 root root   46  4. Aug 2020  other-vhosts-access-log.conf -> ../conf-available/other-vhosts-access-log.conf
lrwxrwxrwx 1 root root   31  4. Aug 2020  security.conf -> ../conf-available/security.conf
lrwxrwxrwx 1 root root   36  4. Aug 2020  serve-cgi-bin.conf -> ../conf-available/serve-cgi-bin.conf
root@example:/etc/apache2$
Eigentlich dachte ich ja, dass das in die localized-error-pages.conf gehört, dort steht es auch drin, genau der gleiche Block wie oben mit ErrorDocument.

Es sind sonst keine VirtualHosts definiert:

Code: Alles auswählen

root@example:/etc/apache2$ grep -r VirtualHost *
apache2.conf:# If you do not specify an ErrorLog directive within a <VirtualHost>
apache2.conf:# logged here.  If you *do* define an error logfile for a <VirtualHost>
conf-available/other-vhosts-access-log.conf:# Define an access log for VirtualHosts that don't define their own logfile
conf-available/localized-error-pages.conf:# even on a per-VirtualHost basis.  If you include the Alias in the global server
ports.conf:# have to change the VirtualHost statement in
sites-available/000-default.conf:<VirtualHost *:80>
sites-available/000-default.conf:</VirtualHost>
sites-available/000-default-le-ssl.conf:<VirtualHost *:443>
sites-available/000-default-le-ssl.conf:</VirtualHost>
sites-available/default-ssl.conf:       <VirtualHost _default_:443>
sites-available/default-ssl.conf:       </VirtualHost>
root@example:/etc/apache2$
Ja, der Inhalt von ErrorDocument ist erstmal nur ein Test, das soll nicht so bleiben.

Antworten