diff --git a/README.md b/README.md index b5f62e7..1693fac 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ On project creation, when Caddy routing is enabled, the app appends a route to: Route shape: - `match.host = []` - `handle[0].handler = reverse_proxy` -- `handle[0].upstreams[0].dial = 127.0.0.1:` +- `handle[0].upstreams[0].dial = unix//projects//app.sock` ## Workspaces and Unix Users diff --git a/internal/app/integrations.go b/internal/app/integrations.go index 8adb56d..e0f6d12 100644 --- a/internal/app/integrations.go +++ b/internal/app/integrations.go @@ -8,6 +8,7 @@ import ( "io" "net/http" "net/url" + "path/filepath" "strings" ) @@ -56,10 +57,15 @@ func (a *App) ensureCaddyRoute(ctx context.Context, p Project) error { if !a.cfg.CaddyRouteEnabled { return nil } + projectDir, err := a.projectDirFor(p) + if err != nil { + return err + } + socketPath := filepath.Join(projectDir, "app.sock") route := map[string]any{ "@id": "project-route-" + p.UserID + "-" + p.Slug, "match": []any{map[string]any{"host": []string{p.RouteHost}}}, - "handle": []any{map[string]any{"handler": "reverse_proxy", "upstreams": []any{map[string]any{"dial": fmt.Sprintf("127.0.0.1:%d", p.TargetPort)}}}}, + "handle": []any{map[string]any{"handler": "reverse_proxy", "upstreams": []any{map[string]any{"dial": "unix/" + socketPath}}}}, } body, _ := json.Marshal(route) url := fmt.Sprintf("%s/config/apps/http/servers/%s/routes", a.cfg.CaddyAdminURL, a.cfg.CaddyServerID)