Hello All,
After digging through the wide variety of posts here about redirect loops I have exhausted my efforts to solve our redirect loop issue. The logs on the spawned pod do not show any errors (yes debug mode is enabled.) The only difference is we use an ALB ingress which I think is irrelevant as we can access the app. Below is the debug log output from the -hub pod.
The ALB points to the proxy-public as stated in almost every post I have read, this is using the default ingress from the helm chart with ALB annotations. I have added and removed almost every option imaginable. e.g. in the config.yaml below I have added and removed the baseUrl/defaultUrl without any change to the redirect issue. Any help would be greatly appreciated!
helm chart: 4.3.1
platform: eks
[D 2025-12-09 17:32:08.651 JupyterHub base:411] Refreshing auth for testuser
[I 2025-12-09 17:32:08.652 JupyterHub log:192] 302 GET /hub/user/testuser/ -> /user/testuser/?redirects=1 (testuser@::ffff:10.246.15.52) 3.31ms
[I 2025-12-09 17:32:08.735 JupyterHub log:192] 302 GET /user/testuser/?redirects=1 -> /hub/user/testuser/?redirects=1 (@10.246.1.222) 0.49ms
[W 2025-12-09 17:32:08.818 JupyterHub base:1883] Redirect loop detected on /hub/user/testuser/?redirects=1
[D 2025-12-09 17:32:09.440 JupyterHub log:192] 200 GET /hub/health (@10.246.15.67) 0.49ms
[I 2025-12-09 17:32:10.223 JupyterHub log:192] 302 GET / -> /hub/ (@::ffff:10.246.14.114) 0.43ms
[I 2025-12-09 17:32:10.820 JupyterHub log:192] 302 GET /hub/user/testuser/?redirects=1 -> /user/testuser/?redirects=2 (testuser@::ffff:10.246.15.52) 2004.57ms
[I 2025-12-09 17:32:10.901 JupyterHub log:192] 302 GET /user/testuser/?redirects=2 -> /hub/user/testuser/?redirects=2 (@10.246.1.222) 0.48ms
[W 2025-12-09 17:32:10.984 JupyterHub base:1883] Redirect loop detected on /hub/user/testuser/?redirects=2
[D 2025-12-09 17:32:11.335 JupyterHub log:192] 200 GET /hub/health (@10.246.15.67) 0.46ms
[D 2025-12-09 17:32:11.440 JupyterHub log:192] 200 GET /hub/health (@10.246.15.67) 0.44ms
[I 2025-12-09 17:32:11.544 JupyterHub log:192] 302 GET / -> /hub/ (@::ffff:10.246.8.34) 0.43ms
[D 2025-12-09 17:32:13.441 JupyterHub log:192] 200 GET /hub/health (@10.246.15.67) 0.46ms
[I 2025-12-09 17:32:14.985 JupyterHub log:192] 302 GET /hub/user/testuser/?redirects=2 -> /user/testuser/?redirects=3 (testuser@::ffff:10.246.15.52) 4003.51ms
[I 2025-12-09 17:32:15.069 JupyterHub log:192] 302 GET /user/testuser/?redirects=3 -> /hub/user/testuser/?redirects=3 (@10.246.1.222) 0.48ms
[W 2025-12-09 17:32:15.156 JupyterHub base:1883] Redirect loop detected on /hub/user/testuser/?redirects=3
[D 2025-12-09 17:32:15.441 JupyterHub log:192] 200 GET /hub/health (@10.246.15.67) 0.44ms
[D 2025-12-09 17:32:16.629 JupyterHub reflector:390] pods watcher timeout
[D 2025-12-09 17:32:16.629 JupyterHub reflector:304] Connecting pods watcher
[D 2025-12-09 17:32:17.441 JupyterHub log:192] 200 GET /hub/health (@10.246.15.67) 0.47ms
[I 2025-12-09 17:32:19.246 JupyterHub log:192] 302 GET / -> /hub/ (@::ffff:10.246.14.114) 0.44ms
[D 2025-12-09 17:32:19.440 JupyterHub log:192] 200 GET /hub/health (@10.246.15.67) 0.41ms
[D 2025-12-09 17:32:21.336 JupyterHub log:192] 200 GET /hub/health (@10.246.15.67) 0.46ms
[D 2025-12-09 17:32:21.441 JupyterHub log:192] 200 GET /hub/health (@10.246.15.67) 0.44ms
[I 2025-12-09 17:32:22.059 JupyterHub log:192] 302 GET / -> /hub/ (@10.246.15.52) 0.44ms
[I 2025-12-09 17:32:22.924 JupyterHub log:192] 302 GET / -> /hub/ (@10.246.8.34) 0.44ms
[I 2025-12-09 17:32:23.158 JupyterHub log:192] 302 GET /hub/user/testuser/?redirects=3 -> /user/testuser/?redirects=4 (testuser@::ffff:10.246.15.52) 8004.26ms
[I 2025-12-09 17:32:23.232 JupyterHub log:192] 302 GET / -> /hub/ (@10.246.12.73) 0.44ms
[I 2025-12-09 17:32:23.238 JupyterHub log:192] 302 GET /user/testuser/?redirects=4 -> /hub/user/testuser/?redirects=4 (@10.246.1.222) 0.28ms
[W 2025-12-09 17:32:23.320 JupyterHub web:1932] 500 GET /hub/user/testuser/?redirects=4 (::ffff:10.246.15.52): Redirect loop detected.
[D 2025-12-09 17:32:23.321 JupyterHub base:1558] Using default error template for 500
[E 2025-12-09 17:32:23.321 JupyterHub log:184] {
"X-Forwarded-For": "10.246.1.222,::ffff:10.246.15.52",
"X-Forwarded-Proto": "https,http",
"X-Forwarded-Port": "443,80",
"Host": "jupyterhub.<redacted>",
"X-Amzn-Trace-Id": "Root=1-69385d27-62dcf9cc0a87ff0d2d72c6cd",
"Cache-Control": "max-age=0",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8",
"Sec-Gpc": "1",
"Accept-Language": "en-US,en;q=0.7",
"Sec-Fetch-Site": "same-origin",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-User": "?1",
"Sec-Fetch-Dest": "document",
"Sec-Ch-Ua": "\"Brave\";v=\"143\", \"Chromium\";v=\"143\", \"Not A(Brand\";v=\"24\"",
"Sec-Ch-Ua-Mobile": "?0",
"Sec-Ch-Ua-Platform": "\"Windows\"",
"Accept-Encoding": "gzip, deflate, br, zstd",
"Priority": "u=0, i",
"Cookie": "jupyterhub-hub-login=[secret]; _xsrf=[secret]; jupyterhub-session-id=[secret]",
"X-Forwarded-Host": "jupyterhub.<redacted>",
"Connection": "keep-alive"
}
[E 2025-12-09 17:32:23.321 JupyterHub log:192] 500 GET /hub/user/testuser/?redirects=4 (testuser@::ffff:10.246.15.52) 3.57ms
[D 2025-12-09 17:32:23.440 JupyterHub log:192] 200 GET /hub/health (@10.246.15.67) 0.44ms
[D 2025-12-09 17:32:24.153 JupyterHub log:192] 304 GET /hub/static/components/@fortawesome/fontawesome-free/css/fontawesome.css (@10.246.1.222) 0.48ms
[D 2025-12-09 17:32:24.154 JupyterHub log:192] 304 GET /hub/static/components/@fortawesome/fontawesome-free/css/solid.css (@::ffff:10.246.15.52) 0.31ms
[D 2025-12-09 17:32:24.392 JupyterHub log:192] 304 GET /hub/static/components/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 (@10.246.1.222) 0.48ms
[I 2025-12-09 17:32:25.223 JupyterHub log:192] 302 GET / -> /hub/ (@::ffff:10.246.12.73) 0.46ms
[D 2025-12-09 17:32:25.440 JupyterHub log:192] 200 GET /hub/health (@10.246.15.67) 0.44ms
[I 2025-12-09 17:32:26.549 JupyterHub log:192] 302 GET / -> /hub/ (@::ffff:10.246.8.34) 0.43ms
[D 2025-12-09 17:32:26.638 JupyterHub reflector:390] pods watcher timeout
[D 2025-12-09 17:32:26.638 JupyterHub reflector:304] Connecting pods watcher
config.yaml
singleuser:
defaultUrl: "/lab"
extraEnv:
NO_PROXY: "jupyterhub.<redacted>,localhost,127.0.0.1"
no_proxy: "jupyterhub.<redacted>,localhost,127.0.0.1"
debug:
enabled: true
ingress:
enabled: true
hosts:
- jupyterhub.<redacted>
ingressClassName: alb
annotations:
alb.ingress.kubernetes.io/scheme: internal
alb.ingress.kubernetes.io/target-type: 'ip'
alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}, {"HTTP":80}]'
alb.ingress.kubernetes.io/certificate-arn: "<redacted>"
alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-TLS-1-2-Ext-2018-06
alb.ingress.kubernetes.io/ssl-redirect: '443'
external-dns.alpha.kubernetes.io/hostname: <redacted>
proxy:
service:
type: ClusterIP
hub:
baseUrl: "/"
config:
Authenticator:
admin_users:
- testuser
scheduling:
userScheduler:
enabled: true
pdb:
enabled: false
proxy logs:
2025-12-09T17:45:03.964Z [ConfigProxy] info: 200 GET /api/routes
2025-12-09T17:45:04.752Z [ConfigProxy] debug: PROXY WEB / to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:04.755Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:10.346Z [ConfigProxy] debug: PROXY WEB / to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:10.350Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:11.738Z [ConfigProxy] debug: PROXY WEB / to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:11.739Z [ConfigProxy] debug: PROXY WEB / to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:11.740Z [ConfigProxy] debug: PROXY WEB / to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:11.741Z [ConfigProxy] debug: PROXY WEB / to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:11.742Z [ConfigProxy] debug: PROXY WEB / to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:11.745Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:11.745Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:11.745Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:11.745Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:11.746Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:13.451Z [ConfigProxy] debug: PROXY WEB /hub/user/testuser/ to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:13.452Z [ConfigProxy] debug: PROXY WEB /hub/user/testuser/ to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:13.453Z [ConfigProxy] debug: PROXY WEB /hub/user/testuser/ to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:13.458Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:13.458Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:13.458Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:13.624Z [ConfigProxy] debug: PROXY WEB /hub/user/testuser/ to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:13.625Z [ConfigProxy] debug: PROXY WEB /hub/user/testuser/ to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:13.625Z [ConfigProxy] debug: PROXY WEB /hub/user/testuser/ to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:15.630Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:15.631Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:15.631Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:15.801Z [ConfigProxy] debug: PROXY WEB /hub/user/testuser/ to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:15.801Z [ConfigProxy] debug: PROXY WEB /hub/user/testuser/ to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:15.802Z [ConfigProxy] debug: PROXY WEB /hub/user/testuser/ to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:19.765Z [ConfigProxy] debug: PROXY WEB / to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:19.768Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:19.806Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:19.806Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:19.807Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:19.976Z [ConfigProxy] debug: PROXY WEB /hub/user/testuser/ to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:19.977Z [ConfigProxy] debug: PROXY WEB /hub/user/testuser/ to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:19.977Z [ConfigProxy] debug: PROXY WEB /hub/user/testuser/ to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:25.349Z [ConfigProxy] debug: PROXY WEB / to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:25.349Z [ConfigProxy] debug: PROXY WEB / to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:25.351Z [ConfigProxy] debug: PROXY WEB / to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:25.353Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:25.354Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:25.354Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:26.742Z [ConfigProxy] debug: PROXY WEB / to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:26.751Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:27.983Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:27.983Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:27.984Z [ConfigProxy] debug: Not recording activity for status 302 on /
2025-12-09T17:45:28.145Z [ConfigProxy] debug: PROXY WEB /hub/user/testuser/ to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:28.145Z [ConfigProxy] debug: PROXY WEB /hub/user/testuser/ to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:28.145Z [ConfigProxy] debug: PROXY WEB /hub/user/testuser/ to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:28.150Z [ConfigProxy] debug: Not recording activity for status 500 on /
2025-12-09T17:45:28.150Z [ConfigProxy] debug: Not recording activity for status 500 on /
2025-12-09T17:45:28.151Z [ConfigProxy] debug: Not recording activity for status 500 on /
2025-12-09T17:45:28.906Z [ConfigProxy] debug: PROXY WEB /hub/static/components/@fortawesome/fontawesome-free/css/solid.css to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:28.907Z [ConfigProxy] debug: PROXY WEB /hub/static/components/@fortawesome/fontawesome-free/css/solid.css to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:28.907Z [ConfigProxy] debug: PROXY WEB /hub/static/components/@fortawesome/fontawesome-free/css/solid.css to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:28.908Z [ConfigProxy] debug: Not recording activity for status 304 on /
2025-12-09T17:45:28.908Z [ConfigProxy] debug: Not recording activity for status 304 on /
2025-12-09T17:45:28.909Z [ConfigProxy] debug: Not recording activity for status 304 on /
2025-12-09T17:45:34.779Z [ConfigProxy] debug: PROXY WEB / to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:34.779Z [ConfigProxy] debug: PROXY WEB / to http://<redacted>-jupyterhub-hub:8081
2025-12-09T17:45:34.779Z [ConfigProxy] debug: PROXY WEB / to http://<redacted>-jupyterhub-hub:8081