views:

3970

answers:

2

Nginx+PHP (on fastCGI) works great for me, but when I enter a path to a PHP file which doesnt exit, instead of getting the default 404 error page (which comes for any invalid .html file), I simply get a "No input file specified.".

How can I customize this page?

+5  A: 

You use the error_page property in the nginx config. I found this http://expressica.com/2008/03/22/nginx-set-up-error-pages/ (but I can't link it because I'm a new user) which shows how to do it.

WizKid
+4  A: 

You can setup a custom error page for every location block in your nginx.conf, or a global error page for the site as a whole.

To redirect to a simple 404 not found page for a specific location:

location /my_blog {
    error_page    404 = /blog_article_not_found.html;
}

A site wide 404 page:

server {
    listen 80;
    error_page  404  /website_page_not_found.html;
    ...

You can append standard error codes together to have a single page for several types of errors:

location /my_blog {
    error_page 500 502 503 504 = /server_error.html
}

To redirect to a totally different server, assuming you had an upstream server named server2 defined in your http section:

upstream server2 {
    server 10.0.0.1:80;
}
server {
    location /my_blog {
        error_page    404 = @try_server2;
    }
    location @try_server2 {
        proxy_pass http://server2;
    }

The manual can give you more details, or you can search google for the terns nginx.conf and error_page for real life examples on the web.

Great Turtle