Custom 503 Error Page
Eden Li
eden at mojiti.com
Sun Feb 3 04:23:07 MSK 2008
Try:
if (-f $document_root/system/maintenance.html) {
rewrite ^(.*)$ @maintenance last;
}
location = @maintenance {
error_page 503 /system/maintenance.html;
return 503;
}
On Feb 3, 2008, at 7:18 AM, Douglas A. Seifert wrote:
> I am trying to use a test for the existence of a file to return a
> error
> page with a 503 Temporarily Unavailable response code. My
> configuration
> is below. The problem is that it does not work. I can see the custom
> error page, but the HTTP status code is 200, not the desired 503.
>
> If I change the if directive to this:
>
> if (-f $document_root/system/maintenance.html) {
> rewrite ^(.*)$ /system/maintenance.html; # No last
> return 503;
> }
>
> I start getting a 503 HTTP status code, but the content is not my
> custom
> error page, but rather the default 503 response compiled into the
> nginx
> server.
>
> Am I doing something terribly wrong? I would really like to see my
> custom page with a real 503 HTTP status code.
>
> Thanks for any help,
> Douglas A. Seifert
>
>
> nginx.conf:
> --------------------------------------------------
> # user and group to run as
> #user www www;
>
> # number of nginx workers
> worker_processes 6;
>
> # pid of nginx master process
> pid /usr/local/www/nginx.pid;
>
> # Number of worker connections. 1024 is a good default
> events {
> worker_connections 1024;
> }
>
> # start the http module where we config http access.
> http {
> # pull in mime-types. You can break out your config
> # into as many include's as you want to make it cleaner
> include /usr/local/nginx/conf/mime.types;
>
> # set a default type for the rare situation that
> # nothing matches from the mimie-type include
> default_type application/octet-stream;
>
> # configure log format
> log_format main '$remote_addr - $remote_user [$time_local] '
> '"$request" $status $body_bytes_sent "$http_referer"
> '
> '"$http_user_agent" "$http_x_forwarded_for"';
>
> # main access log
> access_log /usr/local/www/log/nginx_access.log main;
>
> # main error log
> error_log /usr/local/www/log/nginx_error.log debug;
>
> # no sendfile on OSX
> sendfile on;
>
> # These are good default values.
> tcp_nopush on;
> tcp_nodelay off;
> # output compression saves bandwidth
> gzip on;
> gzip_http_version 1.0;
> gzip_comp_level 2;
> gzip_proxied any;
> gzip_types text/plain text/html text/css application/x-
> javascript
> text/xml application/xml application/xml+rss text/javascript;
>
> server {
>
> # port to listen on. Can also be set to an IP:PORT
> listen *:8080;
>
> # Set the max size for file uploads to 50Mb
> client_max_body_size 50M;
>
> # sets the domain[s] that this vhost server requests for
> server_name .foo.com *;
>
> # doc root
> root /usr/local/www/test;
>
> # vhost specific access log
> access_log /usr/local/www/log/nginx.vhost.access.log main;
>
> # this rewrites all the requests to the maintenance.html
> # page if it exists in the doc root. This is for capistrano's
> # disable web task
> if (-f $document_root/system/maintenance.html) {
> rewrite ^(.*)$ /system/maintenance.html last;
> return 503;
> }
>
> location / {
> root /usr/local/www/test;
> }
>
> error_page 500 502 504 /500.html;
> error_page 503 /503.html;
> }
>
> }
> -----------------------------------------------------------------
>
More information about the nginx
mailing list