I see this question has been asked and answered many times, but I am
unable to
make it work.
On a server with multiple virtual hosts I wish to make a catchall which
responds
to everything with a 404 that reveals no information.
I am running nginx version: nginx/1.8.1 on ubuntu 14.04.
My catchall looks like this
server {
listen 80 default_server;
listen 443 ssl default_server;
allow all;
charset utf-8;
error_page 404 /404.html;
root /mypath/html/;
location = /404.html {
root /mypath/html/;
}
location / {
return 404;
}
}
if I make a fake /etc/hosts dns say dongo.bilbo.com and point at my
server then
http://dongo.bilbo.com/404.html shows me the correct 404 page with no
Nginx
info, however, any other path eg http://dongo.bilbo.com always shows me
the
standard Nginx 404 page.
Is there a way to customize my error page for this case?
I would add that the following works well for my real sites
charset utf-8; error_page 404 /404.html; location /404.html { root /mypath/html; }
and there I do see the 404.html from /mypath/html when I visit missing
pages.
Alternatively is there a way to override nginx’s 404 page so it doesn’t
reveal
the server.
Robin Becker