How to deny with 404 on nginx
error_page 403 404 /404.html;location = /404.html { internal; #return 404}location /admin/ { uwsgi_pass myupstream1; include /path/to/uwsgi_params; allow 127.0.0.1; deny all;}
The 'internal' returns 404 by default.
Adapted from this answer here
A more elegant way is to create a custom error page. In that page instead of showing http error code, you can specify a custom message.
Name an error page
error_page 403 =404 /40X.html; location /admin/ { uwsgi_pass myupstream1; include /path/to/uwsgi_params; allow 127.0.0.1; deny all; } location /40X.html { root path/to/public; }
In your 40x.html you can write any message
<html><body> The requested resource is not available </body></html>
place this 40x.html in your path/to/public directory
You can use "rewrite" instead of "deny all"
location /admin/ { uwsgi_pass myupstream1; include /path/to/uwsgi_params; #allow 127.0.0.1; #deny all; rewrite ^/admin/(.*)$ /404.php?id=$1;}
Put 404.php into the root of your domain (eg _http://127.0.0.1/404.php) or change"path/to/file/404.php?id=$1"