Caddy with Code-server resulting 502

1. The problem I’m having:

I already have working caddy setup to server a static site with lets-encrypt enable. I’m now trying to add a subpath to reverse proxy code-server vscode and facing 502 issues in connecting to the code-server.

My docker-compose file

version: '3'

services:
  caddy:
    image: caddy:alpine
    restart: unless-stopped
    volumes:
      - caddy_data:/data
      - caddy_config:/config
      - /home/public:/srv
      - /home/docker/Caddyfile:/etc/caddy/Caddyfile
    ports:
      - 80:80
      - 443:443
    networks:
      - caddy
  code-server:
    image: codercom/code-server:latest
    container_name: code-server
    environment:
      - PUID=1001
      - PGID=1001
      - TZ=America/Los_Angeles
      - PASSWORD=
      - DEFAULT_WORKSPACE=/config/workspace
    volumes:
      - /home/code-server/config:/config
    ports:
      - 8080:8080
    restart: unless-stopped
    networks:
      - caddy
volumes:
  caddy_data:
  caddy_config:
networks:
  caddy:
    external: true

2. Error messages and/or full log output:

{
    "level": "error",
    "ts": 1677485789.7607517,
    "logger": "http.log.error",
    "msg": "dial tcp 172.23.0.2:8080: connect: connection refused",
    "request": {
        "remote_ip": "23.122.135.122",
        "remote_port": "53929",
        "proto": "HTTP/2.0",
        "method": "GET",
        "host": "itddine.dev",
        "uri": "/code/",
        "headers": {
            "Upgrade-Insecure-Requests": [
                "1"
            ],
            "Sec-Fetch-Dest": [
                "document"
            ],
            "Sec-Fetch-Site": [
                "none"
            ],
            "Sec-Fetch-User": [
                "?1"
            ],
            "User-Agent": [
                "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/110.0"
            ],
            "Accept": [
                "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"
            ],
            "Accept-Encoding": [
                "gzip, deflate, br"
            ],
            "Dnt": [
                "1"
            ],
            "Te": [
                "trailers"
            ],
            "Accept-Language": [
                "en-US,en;q=0.5"
            ],
            "Cookie": [],
            "Sec-Fetch-Mode": [
                "navigate"
            ]
        },
        "tls": {
            "resumed": false,
            "version": 772,
            "cipher_suite": 4865,
            "proto": "h2",
            "server_name": "itddine.dev"
        }
    },
    "duration": 0.008314515,
    "status": 502,
    "err_id": "9npwd9ctj",
    "err_trace": "reverseproxy.statusError (reverseproxy.go:1272)"
}

3. Caddy version:

4. How I installed and ran Caddy:

a. System environment:

b. Command:

PASTE OVER THIS, BETWEEN THE ``` LINES.
Please use the preview pane to ensure it looks nice.

c. Service/unit/compose file:

PASTE OVER THIS, BETWEEN THE ``` LINES.
Please use the preview pane to ensure it looks nice.

d. My complete Caddy config:

{
  debug
  email mail@itddine.dev
}

itddine.dev, www.itddine.dev {
    root * /srv

  # expecting this to route to code-server
    handle_path /code/* {
      reverse_proxy http://code-server:8080
    }
    # using this to sever hugo site
     file_server
}

5. Links to relevant resources:

I verified that code-server is accessable from inside the caddy container. for example i tried using curl -v code-server:8080 and can see found redirection to /login". At this point im not sure what is causing the 502. Can you please help.

Please show what that looks like


Please find the attached image.

In your screenshot, the IP is 172.24.0.2 but in your logs it’s 172.23.0.2. That’s different.

This isn’t a problem with Caddy, it’s an issue with your Docker networking.

Thanks @francislavoie for helping on this. I recreated docker network caddy used in the compose file after i made the post here not sure if that made the change. So i just cleared everything started the docker container and seeing an issue i encountered int he being of my attempts to get this working.
that is , when i go to /code/ i see the browser redirection to /login and it work as you can see below i see the login page of code-server. However After i submit the password i get the 502 for all subsequent request however some of the request like code/_static/src/browser/media/favicon-dark-support.svg works.

here is the log for the attempt

caddy_1        | {
    "level": "debug",
    "ts": 1677524579.9963078,
    "logger": "http.handlers.reverse_proxy",
    "msg": "upstream roundtrip",
    "upstream": "code-server:8080",
    "duration": 0.042698131,
    "request": {
        "remote_ip": "136.226.64.249",
        "remote_port": "57145",
        "proto": "HTTP/1.1",
        "method": "GET",
        "host": "itddinem.dev",
        "uri": "/_static/src/browser/pages/global.css",
        "headers": {
            "Accept-Encoding": [
                "gzip, deflate, br"
            ],
            "Cookie": [],
            "Sec-Fetch-Dest": [
                "style"
            ],
            "Accept": [
                "text/css,*/*;q=0.1"
            ],
            "Sec-Fetch-Mode": [
                "no-cors"
            ],
            "X-Forwarded-For": [
                "136.226.64.249"
            ],
            "Referer": [
                "https://itddinem.dev/code/login"
            ],
            "User-Agent": [
                "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/110.0"
            ],
            "Sec-Fetch-Site": [
                "same-origin"
            ],
            "X-Forwarded-Proto": [
                "https"
            ],
            "X-Forwarded-Host": [
                "itddinem.dev"
            ],
            "Accept-Language": [
                "en-US,en;q=0.5"
            ],
            "Dnt": [
                "1"
            ],
            "Pragma": [
                "no-cache"
            ],
            "Cache-Control": [
                "no-cache"
            ]
        },
        "tls": {
            "resumed": false,
            "version": 772,
            "cipher_suite": 4865,
            "proto": "",
            "server_name": "itddinem.dev"
        }
    },
    "headers": {
        "Cache-Control": [
            "public, max-age=0"
        ],
        "Etag": [
            "W/\"571-1864cfb5c38\""
        ],
        "Content-Type": [
            "text/css; charset=UTF-8"
        ],
        "Content-Encoding": [
            "gzip"
        ],
        "Vary": [
            "Accept-Encoding"
        ],
        "Date": [
            "Mon, 27 Feb 2023 19:02:59 GMT"
        ],
        "Keep-Alive": [
            "timeout=5"
        ],
        "Accept-Ranges": [
            "bytes"
        ],
        "Connection": [
            "keep-alive"
        ],
        "Last-Modified": [
            "Mon, 13 Feb 2023 22:53:07 GMT"
        ]
    },
    "status": 200
}
caddy_1        | {
    "level": "debug",
    "ts": 1677524580.0369997,
    "logger": "http.handlers.reverse_proxy",
    "msg": "upstream roundtrip",
    "upstream": "code-server:8080",
    "duration": 0.080368753,
    "request": {
        "remote_ip": "136.226.64.249",
        "remote_port": "57147",
        "proto": "HTTP/1.1",
        "method": "GET",
        "host": "itddinem.dev",
        "uri": "/_static/src/browser/pages/login.css",
        "headers": {
            "Sec-Fetch-Mode": [
                "no-cors"
            ],
            "User-Agent": [
                "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/110.0"
            ],
            "Sec-Fetch-Site": [
                "same-origin"
            ],
            "X-Forwarded-Proto": [
                "https"
            ],
            "Referer": [
                "https://itddinem.dev/code/login"
            ],
            "Cookie": [],
            "Accept-Encoding": [
                "gzip, deflate, br"
            ],
            "Dnt": [
                "1"
            ],
            "Pragma": [
                "no-cache"
            ],
            "X-Forwarded-Host": [
                "itddinem.dev"
            ],
            "Accept-Language": [
                "en-US,en;q=0.5"
            ],
            "Accept": [
                "text/css,*/*;q=0.1"
            ],
            "Cache-Control": [
                "no-cache"
            ],
            "Sec-Fetch-Dest": [
                "style"
            ],
            "X-Forwarded-For": [
                "136.226.64.249"
            ]
        },
        "tls": {
            "resumed": false,
            "version": 772,
            "cipher_suite": 4865,
            "proto": "",
            "server_name": "itddinem.dev"
        }
    },
    "headers": {
        "Etag": [
            "W/\"34b-1864cfb5c38\""
        ],
        "Content-Length": [
            "843"
        ],
        "Keep-Alive": [
            "timeout=5"
        ],
        "Last-Modified": [
            "Mon, 13 Feb 2023 22:53:07 GMT"
        ],
        "Accept-Ranges": [
            "bytes"
        ],
        "Cache-Control": [
            "public, max-age=0"
        ],
        "Date": [
            "Mon, 27 Feb 2023 19:03:00 GMT"
        ],
        "Connection": [
            "keep-alive"
        ],
        "Vary": [
            "Accept-Encoding"
        ],
        "Content-Type": [
            "text/css; charset=UTF-8"
        ]
    },
    "status": 200
}
caddy_1        | {
    "level": "debug",
    "ts": 1677524580.091328,
    "logger": "http.handlers.rewrite",
    "msg": "rewrote request",
    "request": {
        "remote_ip": "136.226.64.249",
        "remote_port": "57147",
        "proto": "HTTP/1.1",
        "method": "GET",
        "host": "itddinem.dev",
        "uri": "/code/_static/src/browser/media/pwa-icon-512.png",
        "headers": {
            "Dnt": [
                "1"
            ],
            "Cookie": [],
            "Sec-Fetch-Mode": [
                "no-cors"
            ],
            "Pragma": [
                "no-cache"
            ],
            "Accept": [
                "image/avif,image/webp,*/*"
            ],
            "Referer": [
                "https://itddinem.dev/code/login"
            ],
            "Sec-Fetch-Dest": [
                "image"
            ],
            "Accept-Language": [
                "en-US,en;q=0.5"
            ],
            "Connection": [
                "keep-alive"
            ],
            "User-Agent": [
                "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/110.0"
            ],
            "Accept-Encoding": [
                "gzip, deflate, br"
            ],
            "Sec-Fetch-Site": [
                "same-origin"
            ],
            "Cache-Control": [
                "no-cache"
            ]
        },
        "tls": {
            "resumed": false,
            "version": 772,
            "cipher_suite": 4865,
            "proto": "",
            "server_name": "itddinem.dev"
        }
    },
    "method": "GET",
    "uri": "/_static/src/browser/media/pwa-icon-512.png"
}
caddy_1        | {
    "level": "debug",
    "ts": 1677524580.0914068,
    "logger": "http.handlers.reverse_proxy",
    "msg": "selected upstream",
    "dial": "code-server:8080",
    "total_upstreams": 1
}
caddy_1        | {
    "level": "debug",
    "ts": 1677524580.0933065,
    "logger": "http.handlers.rewrite",
    "msg": "rewrote request",
    "request": {
        "remote_ip": "136.226.64.249",
        "remote_port": "57145",
        "proto": "HTTP/1.1",
        "method": "GET",
        "host": "itddinem.dev",
        "uri": "/code/_static/src/browser/media/favicon-dark-support.svg",
        "headers": {
            "Accept-Language": [
                "en-US,en;q=0.5"
            ],
            "Cache-Control": [
                "no-cache"
            ],
            "User-Agent": [
                "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/110.0"
            ],
            "Sec-Fetch-Mode": [
                "no-cors"
            ],
            "Sec-Fetch-Site": [
                "same-origin"
            ],
            "Pragma": [
                "no-cache"
            ],
            "Referer": [
                "https://itddinem.dev/code/login"
            ],
            "Accept-Encoding": [
                "gzip, deflate, br"
            ],
            "Dnt": [
                "1"
            ],
            "Connection": [
                "keep-alive"
            ],
            "Cookie": [],
            "Sec-Fetch-Dest": [
                "image"
            ],
            "Accept": [
                "image/avif,image/webp,*/*"
            ]
        },
        "tls": {
            "resumed": false,
            "version": 772,
            "cipher_suite": 4865,
            "proto": "",
            "server_name": "itddinem.dev"
        }
    },
    "method": "GET",
    "uri": "/_static/src/browser/media/favicon-dark-support.svg"
}
caddy_1        | {
    "level": "debug",
    "ts": 1677524580.093359,
    "logger": "http.handlers.reverse_proxy",
    "msg": "selected upstream",
    "dial": "code-server:8080",
    "total_upstreams": 1
}
caddy_1        | {
    "level": "debug",
    "ts": 1677524580.1020823,
    "logger": "http.handlers.reverse_proxy",
    "msg": "upstream roundtrip",
    "upstream": "code-server:8080",
    "duration": 0.010600196,
    "request": {
        "remote_ip": "136.226.64.249",
        "remote_port": "57147",
        "proto": "HTTP/1.1",
        "method": "GET",
        "host": "itddinem.dev",
        "uri": "/_static/src/browser/media/pwa-icon-512.png",
        "headers": {
            "Accept-Language": [
                "en-US,en;q=0.5"
            ],
            "X-Forwarded-For": [
                "136.226.64.249"
            ],
            "Cookie": [],
            "Pragma": [
                "no-cache"
            ],
            "Accept-Encoding": [
                "gzip, deflate, br"
            ],
            "Cache-Control": [
                "no-cache"
            ],
            "Accept": [
                "image/avif,image/webp,*/*"
            ],
            "X-Forwarded-Proto": [
                "https"
            ],
            "X-Forwarded-Host": [
                "itddinem.dev"
            ],
            "User-Agent": [
                "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/110.0"
            ],
            "Sec-Fetch-Mode": [
                "no-cors"
            ],
            "Referer": [
                "https://itddinem.dev/code/login"
            ],
            "Sec-Fetch-Dest": [
                "image"
            ],
            "Sec-Fetch-Site": [
                "same-origin"
            ],
            "Dnt": [
                "1"
            ]
        },
        "tls": {
            "resumed": false,
            "version": 772,
            "cipher_suite": 4865,
            "proto": "",
            "server_name": "itddinem.dev"
        }
    },
    "headers": {
        "Last-Modified": [
            "Mon, 13 Feb 2023 22:53:07 GMT"
        ],
        "Etag": [
            "W/\"3961-1864cfb5c38\""
        ],
        "Content-Type": [
            "image/png"
        ],
        "Date": [
            "Mon, 27 Feb 2023 19:03:00 GMT"
        ],
        "Keep-Alive": [
            "timeout=5"
        ],
        "Accept-Ranges": [
            "bytes"
        ],
        "Content-Length": [
            "14689"
        ],
        "Connection": [
            "keep-alive"
        ],
        "Cache-Control": [
            "public, max-age=0"
        ]
    },
    "status": 200
}
caddy_1        | {
    "level": "debug",
    "ts": 1677524580.106632,
    "logger": "http.handlers.reverse_proxy",
    "msg": "upstream roundtrip",
    "upstream": "code-server:8080",
    "duration": 0.013198201,
    "request": {
        "remote_ip": "136.226.64.249",
        "remote_port": "57145",
        "proto": "HTTP/1.1",
        "method": "GET",
        "host": "itddinem.dev",
        "uri": "/_static/src/browser/media/favicon-dark-support.svg",
        "headers": {
            "User-Agent": [
                "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/110.0"
            ],
            "Sec-Fetch-Dest": [
                "image"
            ],
            "Referer": [
                "https://itddinem.dev/code/login"
            ],
            "Sec-Fetch-Site": [
                "same-origin"
            ],
            "Accept": [
                "image/avif,image/webp,*/*"
            ],
            "Cookie": [],
            "Accept-Language": [
                "en-US,en;q=0.5"
            ],
            "Sec-Fetch-Mode": [
                "no-cors"
            ],
            "X-Forwarded-Host": [
                "itddinem.dev"
            ],
            "X-Forwarded-Proto": [
                "https"
            ],
            "Cache-Control": [
                "no-cache"
            ],
            "Pragma": [
                "no-cache"
            ],
            "Accept-Encoding": [
                "gzip, deflate, br"
            ],
            "Dnt": [
                "1"
            ],
            "X-Forwarded-For": [
                "136.226.64.249"
            ]
        },
        "tls": {
            "resumed": false,
            "version": 772,
            "cipher_suite": 4865,
            "proto": "",
            "server_name": "itddinem.dev"
        }
    },
    "headers": {
        "Accept-Ranges": [
            "bytes"
        ],
        "Content-Type": [
            "image/svg+xml"
        ],
        "Vary": [
            "Accept-Encoding"
        ],
        "Connection": [
            "keep-alive"
        ],
        "Keep-Alive": [
            "timeout=5"
        ],
        "Last-Modified": [
            "Mon, 13 Feb 2023 22:53:07 GMT"
        ],
        "Etag": [
            "W/\"ea6-1864cfb5c38\""
        ],
        "Content-Encoding": [
            "gzip"
        ],
        "Date": [
            "Mon, 27 Feb 2023 19:03:00 GMT"
        ],
        "Cache-Control": [
            "public, max-age=0"
        ]
    },
    "status": 200
}
caddy_1        | {
    "level": "debug",
    "ts": 1677524594.7469409,
    "logger": "http.handlers.rewrite",
    "msg": "rewrote request",
    "request": {
        "remote_ip": "136.226.64.249",
        "remote_port": "57145",
        "proto": "HTTP/1.1",
        "method": "POST",
        "host": "itddinem.dev",
        "uri": "/code/login",
        "headers": {
            "Accept": [
                "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"
            ],
            "Sec-Fetch-User": [
                "?1"
            ],
            "Connection": [
                "keep-alive"
            ],
            "Referer": [
                "https://itddinem.dev/code/login"
            ],
            "Cookie": [],
            "Upgrade-Insecure-Requests": [
                "1"
            ],
            "Sec-Fetch-Mode": [
                "navigate"
            ],
            "Content-Length": [
                "75"
            ],
            "Origin": [
                "https://itddinem.dev"
            ],
            "Sec-Fetch-Dest": [
                "document"
            ],
            "Cache-Control": [
                "no-cache"
            ],
            "Accept-Language": [
                "en-US,en;q=0.5"
            ],
            "Content-Type": [
                "application/x-www-form-urlencoded"
            ],
            "Dnt": [
                "1"
            ],
            "Pragma": [
                "no-cache"
            ],
            "User-Agent": [
                "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/110.0"
            ],
            "Accept-Encoding": [
                "gzip, deflate, br"
            ],
            "Sec-Fetch-Site": [
                "same-origin"
            ]
        },
        "tls": {
            "resumed": false,
            "version": 772,
            "cipher_suite": 4865,
            "proto": "",
            "server_name": "itddinem.dev"
        }
    },
    "method": "POST",
    "uri": "/login"
}
caddy_1        | {
    "level": "debug",
    "ts": 1677524594.7470322,
    "logger": "http.handlers.reverse_proxy",
    "msg": "selected upstream",
    "dial": "code-server:8080",
    "total_upstreams": 1
}
caddy_1        | {
    "level": "debug",
    "ts": 1677524595.3203576,
    "logger": "http.handlers.reverse_proxy",
    "msg": "upstream roundtrip",
    "upstream": "code-server:8080",
    "duration": 0.554676929,
    "request": {
        "remote_ip": "136.226.64.249",
        "remote_port": "57145",
        "proto": "HTTP/1.1",
        "method": "POST",
        "host": "itddinem.dev",
        "uri": "/login",
        "headers": {
            "Sec-Fetch-User": [
                "?1"
            ],
            "Upgrade-Insecure-Requests": [
                "1"
            ],
            "Accept-Language": [
                "en-US,en;q=0.5"
            ],
            "Sec-Fetch-Site": [
                "same-origin"
            ],
            "Pragma": [
                "no-cache"
            ],
            "X-Forwarded-For": [
                "136.226.64.249"
            ],
            "Accept": [
                "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"
            ],
            "Referer": [
                "https://itddinem.dev/code/login"
            ],
            "X-Forwarded-Proto": [
                "https"
            ],
            "Cache-Control": [
                "no-cache"
            ],
            "Sec-Fetch-Mode": [
                "navigate"
            ],
            "Content-Length": [
                "75"
            ],
            "Origin": [
                "https://itddinem.dev"
            ],
            "X-Forwarded-Host": [
                "itddinem.dev"
            ],
            "Cookie": [],
            "Content-Type": [
                "application/x-www-form-urlencoded"
            ],
            "Dnt": [
                "1"
            ],
            "Sec-Fetch-Dest": [
                "document"
            ],
            "User-Agent": [
                "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/110.0"
            ],
            "Accept-Encoding": [
                "gzip, deflate, br"
            ]
        },
        "tls": {
            "resumed": false,
            "version": 772,
            "cipher_suite": 4865,
            "proto": "",
            "server_name": "itddinem.dev"
        }
    },
    "error": "EOF"
}
caddy_1        | {
    "level": "error",
    "ts": 1677524595.3368993,
    "logger": "http.log.error",
    "msg": "EOF",
    "request": {
        "remote_ip": "136.226.64.249",
        "remote_port": "57145",
        "proto": "HTTP/1.1",
        "method": "POST",
        "host": "itddinem.dev",
        "uri": "/code/login",
        "headers": {
            "Origin": [
                "https://itddinem.dev"
            ],
            "Connection": [
                "keep-alive"
            ],
            "Referer": [
                "https://itddinem.dev/code/login"
            ],
            "Cookie": [],
            "Upgrade-Insecure-Requests": [
                "1"
            ],
            "Sec-Fetch-Mode": [
                "navigate"
            ],
            "Content-Length": [
                "75"
            ],
            "Dnt": [
                "1"
            ],
            "Sec-Fetch-Dest": [
                "document"
            ],
            "Cache-Control": [
                "no-cache"
            ],
            "Accept-Language": [
                "en-US,en;q=0.5"
            ],
            "Content-Type": [
                "application/x-www-form-urlencoded"
            ],
            "Sec-Fetch-Site": [
                "same-origin"
            ],
            "Pragma": [
                "no-cache"
            ],
            "User-Agent": [
                "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/110.0"
            ],
            "Accept-Encoding": [
                "gzip, deflate, br"
            ],
            "Accept": [
                "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"
            ],
            "Sec-Fetch-User": [
                "?1"
            ]
        },
        "tls": {
            "resumed": false,
            "version": 772,
            "cipher_suite": 4865,
            "proto": "",
            "server_name": "itddinem.dev"
        }
    },
    "duration": 0.589264883,
    "status": 502,
    "err_id": "7hcx90k5y",
    "err_trace": "reverseproxy.statusError (reverseproxy.go:1272)"
}
caddy_1        | {
    "level": "debug",
    "ts": 1677524595.4551308,
    "logger": "http.handlers.file_server",
    "msg": "sanitized path join",
    "site_root": "/srv",
    "request_path": "/favicon.ico",
    "result": "/srv/favicon.ico"
}

wanted to add additional datapoint. Since im able to login i see that there is cookie setup in the browser by code-server. I have used the same cookie to make a curl request and i was able to get the content that resulted 502 on the browser.

I’m wondering if there is an issue in my path rewrites to the code-server

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.