North American Network Operators Group

Date Prev | Date Next | Date Index | Thread Index | Author Index | Historical

Re: How not to make an error page (was: OT: www.Amazon.com down?)

  • From: Wil Schultz
  • Date: Fri Jun 06 15:26:27 2008

I see a 503 actually.

When down:
iWil:~ wschultz$ curl www.amazon.com
HTTP/1.1 503 Service Unavailable
Server: NS_6.1
Content-Length:62
Connection: close

iWil:~ wschultz$ wget -S www.amazon.com
--12:21:26--  http://www.amazon.com/
           => `index.html'
Resolving www.amazon.com... 72.21.206.5
Connecting to www.amazon.com|72.21.206.5|:80... connected.
HTTP request sent, awaiting response...
  HTTP/1.1 503 Service Unavailable
  Server: NS_6.1
  Content-Length:62
  Connection: close
12:21:26 ERROR 503: Service Unavailable.


-wil


On Jun 6, 2008, at 11:40 AM, Kevin Day wrote:

On Jun 6, 2008, at 1:24 PM, Lasher, Donn wrote:

Checked, and doublechecked, not just me

www.amazon.com returns:

Http/1.1 Service Unavailable

Anyone have a URL for a network/etc status page, or info on the outage?
Been that way for a while this morning.


-donn



Even worse, the page they're displaying is actually a HTTP 200 response code(OK/no error), with no "Don't cache this" header - which means their error page is considered cacheable by some browsers/proxies. So, you may find users who tried to visit Amazon while they were down are still seeing it down long after they fix it.


Lesson to high profile websites: add these to your error pages so you don't have people complaining you're still down long after you're fixed.

* Don't return a 200 response code. Use 500 or 503. Nothing from 2xx or 4xx.
* Add a "Cache-control: no-cache, must-revalidate, max-age=0" header, as well as an "Expires: 0" header for good measure.
* If your server is really borked and you can't add headers at all, add '<META HTTP-EQUIV="Pragma" CONTENT="no-cache">' to the <head> section. That's not as good, but helps at least on the browser end.
* If possible, add a timestamp to the page somewhere (even if it's in an HTML comment) so you can troubleshoot with users still seeing the error.


-- Kevin