2014-06-12 19 views
5

Mam stronę internetową hostowaną na Amazon S3, ale nie chcę, aby kod odpowiedzi http był 200. Strona jest stroną do konserwacji, do której przekierowuję ruch, kiedy wyłączam główną witrynę w celu przeprowadzenia konserwacji.Jak zmienić kod odpowiedzi http na obiekcie w Amazon S3

Chcę strona Amazon S3 zawierać nagłówek reakcji:

HTTP/1.1 503 Service unavailable 

Amazon daje możliwość dodawania some metadata do obiektu S3, ale nie ma nic za kod stanu HTTP.

Czy to możliwe?

+0

Cześć Tom. Czy udało Ci się znaleźć rozwiązanie tego problemu? – WooDzu

Odpowiedz

-1

Do Amazon pozwalają kod stanu zwyczaj z S3, tutaj jest obejście użyciu nginx.

Obserwujemy istnienie określonego pliku, który działa jak "przełącznik" w trybie konserwacji. Jeśli zostanie znaleziony, możemy proxy_pass żądań do S3 - Sztuczka polega na return 503, ale przekierowanie przetwarzania 503 kodów stanu do "nazwanej lokalizacji" nginx.

Przykład nginx conf (tylko odpowiednie bity pokazano):

server { 

    ... 

    # Redirect processing of 503 status codes to a nginx "named location". 
    error_page 503 @maintenance; 

    # "Maintenance Mode" is off by default - Use a nginx variable to track state. 
    set $maintenance off; 

    # Switch on "Maintenance Mode" if a certain file exists. 
    if (-f /var/www/app/maintenanceON) { 
     set $maintenance on; 
    } 

    if ($maintenance = on) { 
     # For Maintenance mode Google recommend using status code: "503 Service unavailable". 
     return 503; 
    } 

    ... 

    location @maintenance { 
     # Redirect the request to a static maintenance page hosted in Amazon S3. 
     # Note: Use proxy_pass instead of rewrite so we keep the 503 code (otherwise nginx serves a 302 code) 
     rewrite ^(.*)$ /index.html break; 
     proxy_pass http://bucketname.s3-website-us-east-1.amazonaws.com; 
    } 
} 
+0

Chociaż jest to technicznie rozwiązanie dla brakującej funkcjonalności, czy naprawdę warto zapłacić 5 USD lub więcej za obniżoną dostępność, aby poprawić kod statusu strony internetowej może kosztować mniej niż 0,05 USD/miesiąc dla całej witryny? –

+0

Dla nas jest. Nasza strona internetowa kosztuje 15 tys. USD miesięcznie, więc poświęcenie czasu, aby zapewnić serwis utrzymywany w S3 z poprawnym kodem statusu, jest warte wysiłku. – Tom

+0

Nie zgadzam się, że preferowany jest właściwy kod statusu. Chodzi mi o to, że tytuł pytania brzmi "Jak zmienić kod odpowiedzi http na obiekt w Amazon S3"; skonfigurowanie hosta do naprawy kodu statusu obiektu witryny S3 to astronomiczny wzrost ceny w porównaniu do kosztów hostingu obiektu na S3. –

2

Nie wiesz, który przeglądarek lub roboty, które obsługuje to. Ale możesz to zrobić, używając metatagu meta http-equiv status.

<meta http-equiv="status" content="503 Service Unavailable" /> 

Specyfikacja mówi, że należy traktować ją w taki sam sposób, jakby 503 zostało wysłane jako kod statusu.

0

Nie można dostosować kodu stanu dla odpowiedzi S3.

Możesz użyć bramy API jako serwera proxy do strony błędu witryny S3, w której możesz dostosować kody statusu zwrócone.