large_client_header_buffers: Custom error pages are not working
Maxim Dounin
mdounin at mdounin.ru
Tue Jun 5 11:44:27 UTC 2018
Hello!
On Tue, Jun 05, 2018 at 05:34:10AM -0400, prajos wrote:
> Hi there,
> I'm using nginx nginx version 1.12.0 as a reverse proxy to my application
> servers.
> I allow certain top level checks like header size and count to be done at
> nginx level.
>
> The server block looks like the following:
>
> server {
> listen 443 ssl default_server;
> ..
> large_client_header_buffers 32 512;
> ..
> location / {
> ...
> }
>
> error_page 400 /400.json;
> location = /400.json {
> root /etc/nginx/errors-files/;
> allow all;
> internal;
> }
>
> }
>
> Then I start testing the nginx with curl and adding a header of size 600
> bytes.
> nginx promptly stops the request and dumps a default error page instead of
> my custom error page.
>
> <html>
> <head><title>400 Request Header Or Cookie Too Large</title></head>
> <body bgcolor="white">
> <center><h1>400 Bad Request</h1></center>
> <center>Request Header Or Cookie Too Large</center>
> <hr><center>nginx</center>
> </body>
> </html>
>
>
> How can I get a CUSTOM ERROR page for this situation working instead of the
> default page.
Try handling 494 errors instead. It's a custom code used to
report "Request Header Too Large" errors, translated to 400 just
before returning to client. It was introduced in nginx 0.9.4 to
make it possible to define a custom error page for these
particular errors separately from generic 400 errors.
(It looks like it's not documented anywhere but in CHANGES though.
This needs to be fixed.)
--
Maxim Dounin
http://mdounin.ru/
More information about the nginx
mailing list