![Httpd LimitRequestFieldSize wird nicht berücksichtigt](https://rvso.com/image/726412/Httpd%20LimitRequestFieldSize%20wird%20nicht%20ber%C3%BCcksichtigt.png)
Ich habe ein Problem damit, httpd so zu konfigurieren, dass große SPNEGO-Authentifizierungsheader akzeptiert werden. Die Anforderung funktioniert einwandfrei mit Autorisierungsheaderzeilen von bis zu mindestens 5674 Bytes, bricht jedoch bei Autorisierungsheadern von mehr als 6178 Bytes mit der folgenden Antwort ab:
<!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 />
Size of a request header field exceeds server limit.</p>
</body></html>
Und der folgende Fehler im Serverprotokoll (Debugebene)
[Thu Aug 23 07:26:31 2018] [error] [client x.x.x.x] request failed: error reading the headers
Hier ist ein Auszug der Server-Infoseite, die wir aktiviert haben, um sicherzustellen, dass die LimitRequestFieldSize hoch genug war
129: LimitRequestBody 52428800
130: LimitRequestFields 50
131: LimitRequestFieldsize 40960
132: LimitRequestLine 40960
Der Server läuft mit RHEL 6.7 und einem Standard-HTTPD-Server.
$ httpd -V
Server version: Apache/2.2.15 (Unix)
Server built: Mar 3 2015 12:06:14
Server's Module Magic Number: 20051115:25
Server loaded: APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
Architecture: 64-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="run/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
Antwort1
Auf meiner Ubuntu 18.04 LTS-Maschine mit Apache 2.4 habe ich die Datei geändert:
/etc/apache2/conf-available/httpd.conf
laut den Dokumenten unterhttps://httpd.apache.org/docs/2.4/mod/core.html
# https://askubuntu.com/questions/340792/size-of-a-request-header-field-exceeds-server-limit-due-to-many-if-none-match-va
# default is 8k see https://httpd.apache.org/docs/2.4/mod/core.html
LimitRequestFieldSize 32768
# default is 100
LimitRequestFields 200
und den Server neu gestartet. Vielleicht möchten Sie an den Einstellungen herumfummeln
Antwort2
Bearbeiten Sie Ihre virtuellen Hosts und überprüfen Sie die Beschränkungen hinsichtlich der Anforderungsgröße.
Sie können die Standardwerte in httpd.h überprüfen (z. B. DEFAULT_LIMIT_REQUEST_FIELDSIZE).
Beispiel :
<VirtualHost ...>
ServerName www.mysite.com
...
#HTTP Request
LimitRequestFieldSize 32768
LimitRequestFields 200
LimitXMLRequestBody 0
...
</VirtualHost>
Weitere Informationen finden Sie unter:https://httpd.apache.org/docs/2.4/fr/mod/core.html
Antwort3
Wenn Sie Ihre LimitRequest-Direktiven in Ihre Serverkonfiguration einfügen, müssen diese Anweisungen vor Ihrer VirtualHost-Konfiguration eingefügt werden.