@interpolacja_liniowa: Ale to pokaż plik konfiguracyjny nginxa + jego logi (w szczególności), a nie konsole przeglądarki ( ͡°͜ʖ͡°). Oczywiście error log wystarczy
@interpolacja_liniowa: Nie zauważyłem wcześniej configu. Przede wszystkim - przy proxy errorów nie ma, bo proxy zawsze coś zwraca (nawet jak to jest 404, to zadaniem proxy jest przecież proxować także taką odpowiedź). Czyli obsługa odpowiedzi >300 powinna być na poziomie tym, gdzie proxy prowadzi (w sensie serwerów backendowych).
@interpolacja_liniowa: To od Ciebie zależy. Albo musisz zrobić obsługę błędów na backendzie, albo jeżeli chcesz na tym serwerze proxy (co jak rozumiem chciałeś osiągnąć) to musisz dodać proxy_intercept_errors on; Wtedy nginx przechwyci 404 z serwera zdalnego i już wewnątrz siebie go obsłuży wg ustawień.
Determines whether proxied responses with codes greater than or equal to 300 should be passed to a client or be intercepted and redirected to nginx for processing with the error_page directive.
@zwierzak40 Ok, dzięki zaraz sprawdzę, bo ogółem chodzi mi o to, że mam stronę z obrazkami i jest podstrona random która losuje tylko jeden obrazek z bazy 13 tysięcy obrazkow, tylko że musiałem zrobić przesiew i usunąć około 1000 obrazkow i czasem jak backend wylosuje taki usunięty to brzydko wygląda takie 404 w środku przeglądania
@interpolacja_liniowa: A to nie lepiej na poziomie aplikacji, w razie wylosowania brakującego zdjęcia wylosować jeszcze raz/na sztywno ustawić zapasowe zdjęcie zawsze gdy trafia na brakujące?
@interpolacja_liniowa: No, chyba że tak. Ale i w takim wypadku strona powinna być normalnie wygenerowana, bez obrazka, z poprawną paginacją, a zamiast obrazka jakimś komunikat o jego braku. Tak to użytkownik przegląda, przechodzi na kolejne podstrony a tu w pewnym momencie błąd 404/przekierowanie na główną czy cokolwiek? To nie jest dobre rozwiązanie.
I zawsze zwraca 404, chcę nadmienić, że nginx obsługuje zapytania do kestrela bo aplikacja asp.net jeśli to ma jakieś znaczenie :v
źródło: comment_KJIJhO5UHGddJk47jH4qQ59mohVArKjM.jpg
PobierzJeżeli chcesz obsługiwać te błędy na poziomie nginxa to musisz na pewno dodać
proxy_intercept_errors on;http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors
Oczywiście trzeba to dodać w sekcji
proxy_intercept_errors on;Wtedy nginx przechwyci 404 z serwera zdalnego i już wewnątrz siebie go obsłuży wg ustawień.
Jak nie czaisz o co Chodzi to przeczytaj opis tego: http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors:
źródło: comment_wFs0xuOKFQSUKjFAjfhO2lyITTvlanOj.jpg
Pobierz