NGINX Reverse Proxy clientmaxbodysize ohne Wirkung
Moin,
ich habe ein Problem mit einem NGINX Reverse Proxy incl. modsecurity.
Dieser hängt vor einem Exchange. Es funktioniert auch alles so wie es sein soll.
Nur an einer Sache hänge ich:
Wenn mobile Geräte per ActiveSync eine Email größer als 10MB senden wollen, klappt dies nicht.
Kleiner 10MB funktioniert alles.
Fehlerlog von NGINX: "Request body limit is marked to reject the request."
So weit, so eindeutig.
Sowohl in der nginx.conf als auch, testweise, in der conf des virtuellen Hosts hab ich client_max_body_size 100M; gesetzt.
Irgendwie scheint dieser Wert aber keine Wirkung zu haben.
Aktivieren oder Deaktivieren von Modsecurity ändert nichts an dem Verhalten.
Code der nginx.conf
ich habe ein Problem mit einem NGINX Reverse Proxy incl. modsecurity.
Dieser hängt vor einem Exchange. Es funktioniert auch alles so wie es sein soll.
Nur an einer Sache hänge ich:
Wenn mobile Geräte per ActiveSync eine Email größer als 10MB senden wollen, klappt dies nicht.
Kleiner 10MB funktioniert alles.
Fehlerlog von NGINX: "Request body limit is marked to reject the request."
So weit, so eindeutig.
Sowohl in der nginx.conf als auch, testweise, in der conf des virtuellen Hosts hab ich client_max_body_size 100M; gesetzt.
Irgendwie scheint dieser Wert aber keine Wirkung zu haben.
Aktivieren oder Deaktivieren von Modsecurity ändert nichts an dem Verhalten.
Code der nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
load_module modules/ngx_http_modsecurity_module.so;
events {
worker_connections 768;
# multi_accept on;
}
http {
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main.conf;
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
types_hash_max_size 2048;
proxy_connect_timeout 1200s;
proxy_send_timeout 1200s;
proxy_read_timeout 1200s;
fastcgi_send_timeout 1200s;
fastcgi_read_timeout 1200s;
client_max_body_size 100M;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 665398
Url: https://administrator.de/contentid/665398
Ausgedruckt am: 22.11.2024 um 14:11 Uhr
11 Kommentare
Neuester Kommentar
In der nginx.conf solltest du diese Einstellung nicht vornehmen.
Denn ich wette mit dir, dass in conf.d oder sites-enabled eine Datei liegt, die deine Einstellung wieder überschreibt
Falls das in sites-enabled überschrieben wird, ändere es in der entsprechenden Datei ab. Falls es in conf.d gesetzt wird, erstelle dort eine Datei mit einem Namen die lexalisch als letztes geladen wird (z.B. "zzz-mysettings.conf"), um die vorherigen Werte zu überschreiben.
Denn ich wette mit dir, dass in conf.d oder sites-enabled eine Datei liegt, die deine Einstellung wieder überschreibt
Falls das in sites-enabled überschrieben wird, ändere es in der entsprechenden Datei ab. Falls es in conf.d gesetzt wird, erstelle dort eine Datei mit einem Namen die lexalisch als letztes geladen wird (z.B. "zzz-mysettings.conf"), um die vorherigen Werte zu überschreiben.
Hast du einmal mit "nginx -T" getestet, ob die Config in Ordnung ist und tatsächlich neu geladen wird? Wenn Fehler auftreten, bekommst du diese bei einem "reload" nicht angezeigt und nginx macht einfach mit unveränderter Config weiter.
Mit welcher Größe testest du denn? Neben der eigentlichen Datei werden ja noch weitere Informationen im Body übertragen, die dann über das Limit hinaus gehen könnten. Du kannst "client_max_body_size = 0" setzen um die Größe seitens nginx nicht mehr zu überprüfen.
Mit welcher Größe testest du denn? Neben der eigentlichen Datei werden ja noch weitere Informationen im Body übertragen, die dann über das Limit hinaus gehen könnten. Du kannst "client_max_body_size = 0" setzen um die Größe seitens nginx nicht mehr zu überprüfen.
Servus!
Kommst du den intern überhaupt über das Limit?
Ich denke Exchange hat per default ActiveSync auf 10M limitiert...
Gruß
Luigi
Kommst du den intern überhaupt über das Limit?
Ich denke Exchange hat per default ActiveSync auf 10M limitiert...
Gruß
Luigi
Moin,
sieht nach einen Bug in ModSecurity aus.
https://github.com/kubernetes/ingress-nginx/issues/5612
https://github.com/SpiderLabs/ModSecurity-nginx/issues/183
Gruß,
Dani
sieht nach einen Bug in ModSecurity aus.
https://github.com/kubernetes/ingress-nginx/issues/5612
https://github.com/SpiderLabs/ModSecurity-nginx/issues/183
Gruß,
Dani