diff --git a/core/auth/proxy/main.go b/core/auth/proxy/main.go
index a147049..f8ab620 100644
--- a/core/auth/proxy/main.go
+++ b/core/auth/proxy/main.go
@@ -14,6 +14,7 @@
 	"net/http"
 	"net/http/cookiejar"
 	"net/url"
+	"regexp"
 	"slices"
 	"strings"
 )
@@ -25,7 +26,7 @@
 var membershipPublicAddr = flag.String("membership-public-addr", "", "Public address of membership service")
 var groups = flag.String("groups", "", "Comma separated list of groups. User must be part of at least one of them. If empty group membership will not be checked.")
 var upstream = flag.String("upstream", "", "Upstream service address")
-var noAuthPathPrefixes = flag.String("no-auth-path-prefixes", "", "Path prefixes to disable authentication for")
+var noAuthPathPatterns = flag.String("no-auth-path-patterns", "", "Path regex patterns to disable authentication for")
 
 //go:embed unauthorized.html
 var unauthorizedHTML embed.FS
@@ -33,6 +34,23 @@
 //go:embed static/*
 var f embed.FS
 
+var noAuthPathRegexps []*regexp.Regexp
+
+func initPathPatterns() error {
+	for _, p := range strings.Split(*noAuthPathPatterns, ",") {
+		t := strings.TrimSpace(p)
+		if len(t) == 0 {
+			continue
+		}
+		exp, err := regexp.Compile(t)
+		if err != nil {
+			return err
+		}
+		noAuthPathRegexps = append(noAuthPathRegexps, exp)
+	}
+	return nil
+}
+
 type cachingHandler struct {
 	h http.Handler
 }
@@ -100,9 +118,8 @@
 		return
 	}
 	reqAuth := true
-	for _, p := range strings.Split(*noAuthPathPrefixes, ",") {
-		t := strings.TrimSpace(p)
-		if len(t) > 0 && strings.HasPrefix(r.URL.Path, t) {
+	for _, p := range noAuthPathRegexps {
+		if p.MatchString(r.URL.Path) {
 			reqAuth = false
 			break
 		}
@@ -255,6 +272,9 @@
 	if *groups != "" && (*membershipAddr == "" || *membershipPublicAddr == "") {
 		log.Fatal("membership-addr and membership-public-addr flags are required when groups are provided")
 	}
+	if err := initPathPatterns(); err != nil {
+		log.Fatal(err)
+	}
 	http.Handle("/.auth/static/", http.StripPrefix("/.auth", cachingHandler{http.FileServer(http.FS(f))}))
 	http.HandleFunc("/", handle)
 	fmt.Printf("Starting HTTP server on port: %d\n", *port)
