Skip to content
Discussion options

You must be logged in to vote

I figured it out. However, it might not be the solution you want. Caddy is treating the gRPC call as HTTP, so it's trying to decrypt it before sending it to Dozzle. It can't do that because Dozzle's certificates are private. When Caddy sees the SSL request, it fails because it can't perform the proper handshake.

The right solution is to enable layer 4 proxy which just forwards raw TCP.

I was able to test it with:

{
    layer4 {
        localhost:2019 {
            route {
                proxy {
                    upstream localhost:7007
                }
            }
        }
    }
}

Layer 4 is not built in the default binary. You would have to build a custom binary at https://caddy…

Replies: 3 comments 3 replies

Comment options

You must be logged in to vote
0 replies
Comment options

You must be logged in to vote
0 replies
Comment options

You must be logged in to vote
3 replies
@amir20
Comment options

Answer selected by amir20
@amir20
Comment options

@RevenantOne
Comment options

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
bug Something isn't working
2 participants
Converted from issue

This discussion was converted from issue #4281 on December 10, 2025 01:41.