Opened 4 years ago

Closed 4 years ago

#1152 closed defect (worksforme)

Custom error_page doesn't work for HTTP error 413

Reported by: splewako@… Owned by:
Priority: minor Milestone:
Component: other Version: 1.11.x
Keywords: Cc:
uname -a:
nginx -V: nginx version: nginx/1.11.6
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic'

Description

Native Nginx error page instead of custom is shown for 413 errors (404 works fine).


http {

uwsgi_intercept_errors on;
error_page 404 /error.404.html;
error_page 413 /error.413.html;


server {

listen 443 ssl http2;
listen [::]:443 ssl http2;
root /www;


location /error {

internal;

}


location / {

uwsgi_pass unix:/run/uwsgi.sock

}

}

}

Change History (1)

comment:1 by Maxim Dounin, 4 years ago

Resolution: worksforme
Status: newclosed

Works fine here.

Please make sure that:

  • there are no other error_page directives on lower levels, quoting docs:

    These directives are inherited from the previous level if and only if there are no error_page directives defined on the current level.

  • the page in question actually exists (try to request it directly with internal removed).

Full test configuration:

http {
    access_log /dev/stderr combined;

    server {
        listen      8080;

        proxy_intercept_errors on;
        error_page 413 /error413;

        client_max_body_size 1g;

        location / {
            proxy_pass http://127.0.0.1:8081;
        }

        location = /error413 {
            internal;
            return 200 "location /error413\n";
        }
    }

    server {
        listen      8081;
        client_max_body_size 1;
    }
}

Test, which shows that custom error page is returned:

> telnet localhost 8080
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET / HTTP/1.0
Content-Length: 10

1234567890
HTTP/1.1 413 Request Entity Too Large
Server: nginx/1.11.7
Date: Mon, 12 Dec 2016 14:11:05 GMT
Content-Type: text/plain
Content-Length: 19
Connection: close

location /error413
Connection closed by foreign host.

If you still see the problem, consider reopening this ticket and provide a full configuration to reproduce the problem you are seeing.

Note: See TracTickets for help on using tickets.