Podawaj 404 z HAProxy, gdy nie pasuje żaden acls

15

Obecnie ponownie konfiguruję HAProxy przy użyciu 1.5dev-17. Chciałbym zwrócić błąd 404, gdy nie ma zaplecza do użycia dla konkretnego żądania.

Nasza obecna konfiguracja korzysta z default_backend do trasowania do naszych serwerów aplikacji django, ale gdy istnieje wiele żądań sondowania (takich jak test testowy), które nie pasują do żadnego z innych skonfigurowanych backendów, nasze serwery django zostają zatrzymane podczas próby do obsługi tych nieprawidłowych żądań, ostatecznie zwracając 404.

Chciałbym podać 404 z HAProxy zamiast delegować do backendów django. Obecnie osiągam to dzięki hackowi:

frontend www
    ...
    default_backend nomatch

backend nomatch
    errorfile 503 /var/www/http/404.http

A w pliku 404.http ustawiam kod stanu 404 w nagłówkach. To działa, ale wydaje się bardzo złe. Czy jest lepszy sposób na osiągnięcie tego z HAProxy? A może powinienem używać zwykłego backendu i pozwolić temu uchwytowi odpowiadać za pomocą 404?

Josh Smeaton
źródło
Jaka jest zawartość pliku 404.http?
Jason Floyd
3
@JasonFloyd, HTTP/1.0 404 Not Founda następnie kilka innych nagłówków, następnie pusty wiersz, a następnie <html>treść.
Josh Smeaton

Odpowiedzi:

2

Po tym, jak chciałem czegoś podobnego, wpadłem na to samo. Źle się wydawało, ale działa bardzo dobrze w praktyce i jest znacznie czystsze niż próba umieszczenia na czarnej liście konkretnych adresów URL. Pamiętaj tylko, aby zostawić komentarz, aby nikt nie natknął się na niego, uważając go za niepoprawny.

Philip Cristiano
źródło