Nginx: Custom Error 403 Page Not Working with IP Deny Configuration

I block or deny access based on the host name or IP address of the client visiting website under nginx web server. I want to display customized e403.html error page, but it doesn't appear to be working. Nginx always displays the built-in, hardcoded "403 Forbidden" error message. Here is my configuration:

.....
...
deny 1.2.3.4;
deny 91.212.45.0/24;
deny 91.212.65.0/24;
.....
...
error_page 403 /e403.html;
location = /e403.html {
root html;
}

How do I fix this problem and display custom error 403 page under nginx server?

The deny parameter will block all access including access to /e403.html file. All you need to add is allow all; inside location directive as follows. Edit /usr/local/etc/nginx/nginx.conf or /etc/nginx/nginx.conf, enter:
# vi /usr/local/etc/nginx/nginx.conf
Update it as follows:

 error_page 403 /e403.html;
location = /e403.html {
root html;
allow all;
}

The above should fix the problem. Once done, reload the nginx web server:
# /usr/local/nginx/sbin/nginx -t && # /usr/local/nginx/sbin/nginx -s reload

Was this answer helpful?

 Print this Article

Also Read

Setting up VPN for CentOS

First, You will need to open up a ticket with our support desk and ask for TUN/TAP to be enabled...

Nginx Force (Redirect) WWW.Domain.COM To Domain.COM

I know how to force and redirect www.example.com to example.com under Lighttpd web server. How do...

Linux nginx: Chroot (Jail) Setup

You can use traditional chroot kind of setup with nginx. Our sample setup: Jail Directory :...

Nginx Block And Deny IP Address OR Network Subnets

How do I block or deny access based on the host name or IP address of the client visiting...

tcpdump: Monitor ALL eth1 Traffic Except My Own SSH Session

I'm using tcpdump to dump, debug and monitor traffic on a network. However, there is lots of...