feat(phoenix): /phoenix/v1/traces POST 는 비번 없이 — -13 이 8914 경유로 trace 보내는 길
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
671f610371
commit
eb3da84f22
@@ -3,6 +3,7 @@
|
||||
- Phoenix 는 PHOENIX_HOST_ROOT_PATH=/phoenix 로 떠 있음 — 이건 HTML 링크에만 /phoenix 를 붙이는 옵션이고
|
||||
실제 경로는 접두어 없이 받음(실측: /phoenix/assets/… 는 SPA 폴백 HTML, /assets/… 가 진짜). 그래서 여기서 /phoenix 를 떼고 넘김.
|
||||
- 관리자 화면이라 HTTP Basic 으로 잠금: PHOENIX_UI_PASSWORD (아이디 아무거나). 비우면 잠금 없음 — 사내망이라도 채우는 걸 권장.
|
||||
- `POST /phoenix/v1/traces` 만 비번 없이 통과 — -13(ABAP_OPENCODE)이 바깥 8914 로 trace 를 보내는 길(다른 방이라 8915 직접 못 감).
|
||||
- 웹소켓은 안 넘김(Django ASGI 가 안 받음) — 트레이스 화면은 HTTP 만으로 동작. 플레이그라운드 스트리밍 같은 건 안 됨.
|
||||
"""
|
||||
|
||||
@@ -44,7 +45,8 @@ async def proxy(request: HttpRequest, rest: str = "") -> HttpResponse:
|
||||
base = (settings.LANGFUSE.get("phoenix") or "").rstrip("/")
|
||||
if not base:
|
||||
return HttpResponse("PHOENIX_HOST 가 비어 있음", status=503)
|
||||
if not _password_ok(request):
|
||||
ingest = request.method == "POST" and rest.strip("/") == "v1/traces"
|
||||
if not ingest and not _password_ok(request):
|
||||
return _unauthorized()
|
||||
# /phoenix/<rest> → PHOENIX_HOST/<rest> (접두어 떼고). 쿼리는 그대로.
|
||||
url = base + "/" + rest.lstrip("/")
|
||||
|
||||
Reference in New Issue
Block a user