imgproxy icon indicating copy to clipboard operation
imgproxy copied to clipboard

IMGPROXY_FALLBACK_IMAGE is not returned on error 500

Open MikeVL opened this issue 1 year ago • 8 comments

If remote url return html code, imgproxy return error 500 with text Internal error, but not fallback image

ERROR   [2024-10-11T06:52:33Z] Completed in 828.215882ms /url/cdSg_FJdwMgBHr-ibNoxnPjL5X7NS4lDgJlj1yw4hE8/rs:fit:1200:900/g:sm/aHR0cDovL3N2ZXRl/cnJhLnJ1L3VwbG9h/ZC9pYmxvY2svODRm/Lzg0ZjU0MjcwYzM1/ZDlkZWY4MTQyYjE3/NjE0NzY0ZWI5Lmpw/Zw  request_id=uA-Za_kRw09ic92B9ddI3 method=GET status=500 client_ip=87.250.224.44 error="XML parse error: unexpected NULL character on line 1 and column 5\n    1: ����··JFIF·····`·`··��·<CREATOR: gd-jpeg v1.0 (using IJG ...\n           ^"
/app/processing_handler.go:194 main.sendErrAndPanic
/app/processing_handler.go:193 main.sendErrAndPanic
/app/processing_handler.go:198 main.checkErr
/app/server.go:114 main.buildRouter.withCORS.func1
/app/server.go:165 main.buildRouter.withPanicHandler.func2
/app/server.go:103 main.buildRouter.withMetrics.func3
/app/router/router.go:102 github.com/imgproxy/imgproxy/v3/router.(*Router).ServeHTTP
/usr/local/go/src/net/http/server.go:2939 net/http.serverHandler.ServeHTTP
/usr/local/go/src/net/http/server.go:2010 net/http.(*conn).serve
/usr/local/go/src/runtime/asm_amd64.s:1651 runtime.goexit
WARNING [2024-10-11T06:52:35Z] Could not load image https://www.***.**//upload/iblock/f94/f94d545ba4954c6f253d7848a5df0d0d.jpg. Using fallback image. Can't download source image: Status: 404; <!DOCTYPE html>
<html dir="ltr" lang="ru">

<head>
    <meta charset="UTF-8" />
     <link rel="icon" href="/favicon.svg" type="image/svg+xml">
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
    <link rel="apple-touch-icon" sizes="180x180" href="/favicon.png" />
...

MikeVL avatar Oct 11 '24 06:10 MikeVL

Hey @MikeVL!

It looks like there's a problem with your fallback image. Can I take a look at it?

DarthSim avatar Oct 11 '24 16:10 DarthSim

Hey @DarthSim !

I use base64 encoded image in helmchart values

  fallbackImage:
    data: "PHN2ZyBoZWlnaHQ9IjcwIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgd2lkdGg9IjcwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiM4ZThlOGUiPjxwYXRoIGQ9Im0yNzUuMjc3MzQ0IDI5Ni40ODgyODEtNTkuNzY1NjI1LTU5Ljc2NTYyNWMtMTguMjQ2MDk0IDM4LjEyODkwNiAyMS41NjI1IDc4LjA0Njg3NSA1OS43NjU2MjUgNTkuNzY1NjI1em0wIDAiLz48cGF0aCBkPSJtMTY3LjY0NDUzMSAxNDYuNDMzNTk0IDE3LjMyNDIxOS01NS40MzM1OTRoMTQyLjA2MjVsMTguNzUgNjBoNzUuMjE4NzV2MjQwaC04Ljc4OTA2MmwzNS4xODc1IDM0LjE4NzVjNDEuNjA5Mzc0LTQ2LjcxNDg0NCA2NC42MDE1NjItMTA2LjExMzI4MSA2NC42MDE1NjItMTY5LjE4NzUgMC0xNDAuOTE0MDYyLTExNS4wNDY4NzUtMjU2LTI1Ni0yNTYtNjMuMDc0MjE5IDAtMTIyLjQ3MjY1NiAyMy45OTIxODgtMTY5LjE4NzUgNjUuNjAxNTYyem0wIDAiLz48cGF0aCBkPSJtMTU5Ljc4OTA2MiAxODFoLTM4Ljc4OTA2MnYxODBoMjE4Ljc4OTA2MmwtNDIuNDk2MDkzLTQyLjQ5NjA5NGMtMTEuODU1NDY5IDcuODYzMjgyLTI2LjAzMTI1IDEyLjQ5NjA5NC00MS4yOTI5NjkgMTIuNDk2MDk0LTQxLjM1MTU2MiAwLTc1LTMzLjY0ODQzOC03NS03NSAwLTE1LjI2MTcxOSA0LjYzMjgxMi0yOS40Mzc1IDEyLjQ5NjA5NC00MS4yOTI5Njl6bTAgMCIvPjxwYXRoIGQ9Im0zNjkuNzg5MDYyIDM5MWgtMjc4Ljc4OTA2MnYtMjQwaDM4Ljc4OTA2MmwtNjQuMTg3NS02NC4xODc1Yy00MS42MDkzNzQgNDYuNzE0ODQ0LTY1LjYwMTU2MiAxMDYuMTEzMjgxLTY1LjYwMTU2MiAxNjkuMTg3NSAwIDE0MC45MTQwNjIgMTE1LjA0Njg3NSAyNTYgMjU2IDI1NiA2My4wNzQyMTkgMCAxMjIuNDcyNjU2LTIzLjk5MjE4OCAxNjkuMTg3NS02NS42MDE1NjJ6bTAgMCIvPjxwYXRoIGQ9Im0zOTEgMzYxdi0xODBoLTY3LjI4MTI1bC0xOC43NS02MGgtOTcuOTM3NWwtMTUuNDMzNTk0IDQ5LjM4NjcxOSAyMy4xMDkzNzUgMjMuMTA5Mzc1YzExLjg1NTQ2OS03Ljg2MzI4MiAyNi4wMzEyNS0xMi40OTYwOTQgNDEuMjkyOTY5LTEyLjQ5NjA5NCA0MS4zNTE1NjIgMCA3NSAzMy42NDg0MzggNzUgNzUgMCAxNS4yNjE3MTktNC42MzI4MTIgMjkuNDM3NS0xMi40OTYwOTQgNDEuMjkyOTY5bDYzLjcwNzAzMiA2My43MDcwMzF6bTAgMCIvPjxwYXRoIGQ9Im0yMzYuNzIyNjU2IDIxNS41MTE3MTkgNTkuNzY1NjI1IDU5Ljc2NTYyNWMxOC4yNDYwOTQtMzguMTI4OTA2LTIxLjU2MjUtNzguMDQ2ODc1LTU5Ljc2NTYyNS01OS43NjU2MjV6bTAgMCIvPjwvZz48L3N2Zz4="
    ttl: "3600"

If remove url returns 404, its works well.

MikeVL avatar Oct 11 '24 17:10 MikeVL

Hmm, it seems that everything is ok with it. Which version of imgproxy do you use?

DarthSim avatar Oct 11 '24 17:10 DarthSim

v3.20.0

Log messages

WARNING [2024-10-11T18:58:04Z] Could not load image http://sveterra.ru/upload/iblock/8b0/8b03a2d12c9e188ad1eac217afcb0869.jpg. Using fallback image. Can't download source image: Status: 404; <!DOCTYPE html>
ERROR   [2024-10-11T18:58:04Z] Completed in 890.721621ms /url/OEu6ZzrENUa-F1Q0n4GWH6DIu7Tqk_aP4d41HD20yRs/rs:fit:1200:900/g:sm/aHR0cDovL3N2ZXRl/cnJhLnJ1L3VwbG9h/ZC9pYmxvY2svOGIw/LzhiMDNhMmQxMmM5/ZTE4OGFkMWVhYzIx/N2FmY2IwODY5Lmpw/Zw  request_id=f3_r6sjRf-TGE1v6RKW4i method=GET status=500 client_ip=95.108.213.123 error="XML parse error: unexpected NULL character on line 1 and column 5\n    1: ����··Exif··II*·············��··Ducky·······2··��··Adobe·...\n           ^"
WARNING [2024-10-11T18:58:05Z] Could not load image https://cabsystems.ru/upload/iblock/af6/af642eb62e9e5520cb3a42dd520d8477.jpg. Using fallback image. Can't download source image: Status: 404; <!DOCTYPE html>
ERROR   [2024-10-11T18:58:05Z] Completed in 727.716093ms /url/H98TrpWK3Hn1or_YyAr9LXPeK6Kk4agmLbceGUH-X64/rs:fit:1200:900/g:sm/aHR0cHM6Ly9jYWJz/eXN0ZW1zLnJ1L3Vw/bG9hZC9pYmxvY2sv/YWY2L2FmNjQyZWI2/MmU5ZTU1MjBjYjNh/NDJkZDUyMGQ4NDc3/LmpwZw  request_id=Vgv65zbT37D7RI3xC_uR- method=GET status=500 client_ip=213.180.203.211 error="XML parse error: unexpected NULL character on line 1 and column 5\n    1: ����··Exif··II*·············��··Ducky·······2··��··Adobe·...\n           ^"
WARNING [2024-10-11T18:58:08Z] Could not load image http://sveterra.ru/upload/iblock/033/03325f6e812c3fa290173b1fb0c28240.jpg. Using fallback image. Can't download source image: Status: 404; <!DOCTYPE html>
ERROR   [2024-10-11T18:58:08Z] Completed in 1.895895868s /url/BeqAHT6u86P9l8nYggGZnxY8sN5gRHfQIDMB6MSPZq4/rs:fit:1200:900/g:sm/aHR0cDovL3N2ZXRl/cnJhLnJ1L3VwbG9h/ZC9pYmxvY2svMDMz/LzAzMzI1ZjZlODEy/YzNmYTI5MDE3M2Ix/ZmIwYzI4MjQwLmpw/Zw  request_id=LIoqM-11ocaTKKwbvAcYl method=GET status=500 client_ip=5.255.231.169 error="XML parse error: unexpected NULL character on line 1 and column 5\n    1: ����··Exif··II*·············��··Ducky·······2··��··Adobe·...\n           ^"

MikeVL avatar Oct 11 '24 19:10 MikeVL

This is weird as hell. The XML parse error tells about some EXIF stuff, but the fallback image you set to fallbackImage.data is SVG, so it doesn't have EXIF. And if it wasn't SVG, then why would any XML parsing be involved? The saddest part is that I can't reproduce this with your provided data. Do you by any chance use a fork of imgproxy?

DarthSim avatar Oct 12 '24 12:10 DarthSim

I use darthsim/imgproxy:v3.20.0 docker image

Can you try this image sourece? https://www.meratest.ru/catalog_photos/item_142735/originals/142735_a2c8849dcef8a4f8e76d65a24458fa06.jpg

MikeVL avatar Oct 12 '24 12:10 MikeVL

The same: the fallback image is used without an issue.

Did you try using a fallback image URL instead of base64 data? Maybe it's Helm or K8s messing up with long values, IDK.

DarthSim avatar Oct 12 '24 13:10 DarthSim

I used the URL before, and then changed it to BASE64, and only now I understand that the broken pictures are possibly a cache in CloudFlar, now the pictures are starting to be updated on fallback.

There are errors in the logs, but the fallback picture is displayed normally.

I'll observe some more and write about the results.

MikeVL avatar Oct 12 '24 13:10 MikeVL