Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

`adk web --url_prefix` doesn't fix /docs and /openapi.json behind a reverse proxy

Đang mở
#7,070 3 bình luận 0 reaction 1 người được giao Xem trên GitHub

@surajksharma07 đang làm issue này rồi.

Từ ngày 9/9/2026.

Đánh giá

Issue này chưa được đánh giá.

Mô tả

request clarification web

Description

When running adk web behind a reverse proxy that mounts the app under a path prefix (e.g. https://host/agents/myagent/...), the --url_prefix flag is documented as fixing exactly this case:

Optional. URL path prefix when the application is mounted behind a reverse proxy or API gateway (e.g., '/api/v1', '/adk'). This ensures generated URLs and redirects work correctly when the app is not served at the root path.

In practice, url_prefix is currently only used for two things in api_server.py:

  1. Setting backendUrl in the dev-ui's runtime-config.json.
  2. Building the /dev-ui/ redirect target.

It is never passed to the underlying FastAPI app as root_path. Since FastAPI(lifespan=internal_lifespan) is constructed with no root_path, Starlette generates docs_url/openapi_url and other reverse-generated URLs assuming the app is served at /.

Repro

  1. Run adk web --url_prefix /agents/myagent ... (or a full URL, as some deployments pass an absolute backend URL here).
  2. Put the app behind a proxy that forwards https://host/agents/myagent/* to the pod, stripping the prefix before it reaches the app (so the app itself sees requests at /).
  3. Visit https://host/agents/myagent/docs.
  4. Swagger UI loads, but its embedded fetch of /openapi.json resolves against the bare domain root (https://host/openapi.json), not https://host/agents/myagent/openapi.json — so it 404s (or worse, hits an unrelated service sharing that domain).

Suggested fix

Derive the FastAPI root_path from url_prefix and pass it into the FastAPI(...) constructor. url_prefix can be either a bare path or a full absolute URL (in our deployment we pass a full URL, since it's reused as the frontend's absolute backendUrl), so extracting just the path component via urllib.parse.urlparse(url_prefix).path handles both cases.

I've opened a draft PR with this fix: (link added below once created)

Happy to adjust the approach (e.g. supporting X-Forwarded-Prefix as a runtime alternative) if that's preferred over a startup-time flag.

Ngôn ngữ chính
Python
Star
21.6k
Fork
4k
Merge trung bình
13 giờ 49 phút
Pull request đã merge (30 ngày)
10

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của google/adk-python

Tất cả issue của google/adk-python

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.