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?


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.