Suggestions on how to have error pages based on content type

Zev Blut zblut at cerego.co.jp
Sat Oct 24 12:30:01 MSD 2009


Hello,

I am wondering if it is possible to serve up error pages based on the 
content type.

I.e. I want to show a different 503 error page for html, xml and 
javascript content types.

I have tried to do something like this (with Nginx 0.6 series):
---------------------------

server {
    listen       80;

    charset off;
    server_name errortest.localhost;

    root /var/www/foobar/nginx_error_test;

    if (-f /var/www/foobar/nginx_error_test/maintenance_on.html) {
      rewrite  ^(/images/.*)$  /images/server-maintenance.png break;
      return 503;
      break;
    }

    error_page   503 /system/maintenance;

    location = /system/maintenance {
      auth_basic off;
      root /var/www/foobar/nginx_error_test/system;

      if ($content_type ~* javascript) {
        rewrite . /system/maintenance.json break;
      }

      if ($content_type ~* xml) {
        rewrite . /system/maintenance.xml break;
      }

      rewrite . /system/maintenance.html break;
    }

    if (-f $request_filename) {
       break;
    }

    if (-f $request_filename.html) {
       rewrite (.*) $1.html break;
    }

}

---------------------------

Unfortunately, this does not work.  All that happens is I get the 
standard Nginx 503 html error response.

Any ideas if I can do this and if so what I am doing wrong?

Thanks,
Zev





More information about the nginx mailing list