Skip to content

bug: Standalone API-driven mode, Unable to access the apisix UI #12860

@wgy-home

Description

@wgy-home

Current Behavior

When accessing the apisix UI interface, a 404 error is reported。

Image

Expected Behavior

No response

Error Logs

apisix log

2026/01/05 05:57:28 [warn] 54#54: *48469493 an upstream response is buffered to a temporary file /usr/local/apisix/proxy_temp/6/02/0000000026 while reading upstream, client: 172.20.0.208, server: _, request: "GET /ui/assets/index-C7n9ulEM.js HTTP/1.1", upstream: "http://172.20.1.101:9180/ui/assets/index-C7n9ulEM.js", host: "apisix-admin.wgy.inchtek.tech:32571", referrer: "http://apisix-admin.wgy.inchtek.tech:32571/ui/routes?page=1&page_size=10"
2026/01/05 05:57:28 [warn] 50#50: *48469499 an upstream response is buffered to a temporary file /usr/local/apisix/proxy_temp/7/02/0000000027 while reading upstream, client: 172.20.0.208, server: _, request: "GET /ui/assets/monaco-editor-vendor-DU3RmTXG.js HTTP/1.1", upstream: "http://172.20.1.101:9180/ui/assets/monaco-editor-vendor-DU3RmTXG.js", host: "apisix-admin.wgy.inchtek.tech:32571", referrer: "http://apisix-admin.wgy.inchtek.tech:32571/ui/routes?page=1&page_size=10"
2026/01/05 05:57:28 [warn] 55#55: *48469500 an upstream response is buffered to a temporary file /usr/local/apisix/proxy_temp/8/02/0000000028 while reading upstream, client: 172.20.0.208, server: _, request: "GET /ui/assets/antd-vendor-C01oSD3T.js HTTP/1.1", upstream: "http://172.20.1.101:9180/ui/assets/antd-vendor-C01oSD3T.js", host: "apisix-admin.wgy.inchtek.tech:32571", referrer: "http://apisix-admin.wgy.inchtek.tech:32571/ui/routes?page=1&page_size=10"
172.20.1.101 - - [05/Jan/2026:05:57:28 +0000] apisix-admin.wgy.inchtek.tech:32571 "GET /ui/routes?page=1&page_size=10 HTTP/1.1" 200 433 0.000 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36" - - - "http://apisix-admin.wgy.inchtek.tech:32571"
172.20.1.101 - - [05/Jan/2026:05:57:28 +0000] apisix-admin.wgy.inchtek.tech:32571 "GET /ui/assets/index-C7n9ulEM.js HTTP/1.1" 200 284141 0.000 "http://apisix-admin.wgy.inchtek.tech:32571/ui/routes?page=1&page_size=10" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36" - - - "http://apisix-admin.wgy.inchtek.tech:32571"
172.20.1.101 - - [05/Jan/2026:05:57:29 +0000] apisix-admin.wgy.inchtek.tech:32571 "GET /apisix/admin/routes?page=1&page_size=10 HTTP/1.1" 404 627 0.000 "http://apisix-admin.wgy.inchtek.tech:32571/ui/routes?page=1&page_size=10" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36" - - - "http://apisix-admin.wgy.inchtek.tech:32571"

Steps to Reproduce

  1. apisix installed via helm, below is my configuration file
    ···yaml
    egrep -v '#|^$' values.yaml
    global:
    imagePullSecrets: []
    image:
    repository: harbor.inchtek.tech/library/apisix
    pullPolicy: IfNotPresent
    tag: 3.14.1-ubuntu
    useDaemonSet: false
    replicaCount: 1
    priorityClassName: ""
    podAnnotations: {}
    podSecurityContext: {}
    securityContext: {}
    podDisruptionBudget:
    enabled: false
    minAvailable: 90%
    maxUnavailable: 1
    resources: {}
    hostNetwork: false
    nodeSelector: {}
    tolerations: []
    affinity: {}
    topologySpreadConstraints: []
    timezone: ""
    extraEnvVars: []
    updateStrategy: {}
    extraDeploy: []
    extraVolumes: []
    extraVolumeMounts: []
    extraInitContainers: []
    extraContainers: []
    initContainer:
    image: busybox
    tag: 1.28
    autoscaling:
    enabled: false
    version: v2
    minReplicas: 1
    maxReplicas: 100
    targetCPUUtilizationPercentage: 80
    targetMemoryUtilizationPercentage: 80
    nameOverride: ""
    fullnameOverride: ""
    serviceAccount:
    create: false
    annotations: {}
    name: ""
    rbac:
    create: false
    service:
    type: NodePort
    externalTrafficPolicy: Cluster
    externalIPs: []
    http:
    enabled: true
    servicePort: 80
    containerPort: 9080
    additionalContainerPorts: []
    tls:
    servicePort: 443
    stream:
    enabled: false
    tcp: []
    udp: []
    labelsOverride: {}
    ingress:
    enabled: false
    servicePort:
    className: apisix
    annotations:
    kubernetes.io/ingress.class: apisix
    hosts:
    • host: apisix.wgy.inchtek.tech
      paths: ["/*"]
      tls: []
      control:
      enabled: true
      service:
      annotations: {}
      type: ClusterIP
      externalIPs: []
      ip: "127.0.0.1"
      port: 9090
      servicePort: 9090
      ingress:
      enabled: false
      annotations: {}
      className: "apisix"
      hosts:
      • host: apisix-control.wgy.inchtek.tech
        paths:
        • "/*"
          tls: []
          metrics:
          serviceMonitor:
          enabled: false
          namespace: ""
          name: ""
          interval: 15s
          labels: {}
          annotations: {}
          apisix:
          enableIPv6: true
          enableHTTP2: true
          enableServerTokens: true
          setIDFromPodUID: false
          luaModuleHook:
          enabled: false
          luaPath: ""
          hookPoint: ""
          configMapRef:
          name: ""
          mounts:
        • key: ""
          path: ""
          ssl:
          enabled: false
          containerPort: 9443
          additionalContainerPorts: []
          existingCASecret: ""
          certCAFilename: ""
          enableHTTP3: false
          sslProtocols: "TLSv1.2 TLSv1.3"
          sslCiphers: "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA"
          fallbackSNI: ""
          router:
          http: radixtree_host_uri
          fullCustomConfig:
          enabled: false
          config: {}
          deployment:
          mode: traditional
          role: "traditional"
          role_traditional:
          config_provider: "yaml"
          standalone:
          config: |
          routes:
        • uri: /hi
          upstream:
          nodes:
          "127.0.0.1:1980": 1
          type: roundrobin
          existingConfigMap: ""
          admin:
          admin_key:
      • name: admin
        role: admin
        key: edd1c9f034335f136f87ad84b625c8f1
        enabled: true
        enable_admin_ui: true
        type: ClusterIP
        externalIPs: []
        ip: 0.0.0.0
        port: 9180
        servicePort: 9180
        cors: true
        credentials:
        admin: edd1c9f034335f136f87ad84b625c8f1
        viewer: 4054f7cf07e344346cd3f287985e76a2
        secretName: ""
        secretAdminKey: ""
        secretViewerKey: ""
        allow:
        ipList:
        • 127.0.0.1/24
          ingress:
          enabled: true
          annotations:
          {}
          className: apisix
          hosts:
        • host: apisix-admin.wgy.inchtek.tech
          paths:
          • "/*"
            tls: []
            nginx:
            workerRlimitNofile: "20480"
            workerConnections: "10620"
            workerProcesses: auto
            enableCPUAffinity: true
            keepaliveTimeout: 60s
            envs: []
            logs:
            enableAccessLog: true
            accessLog: "/dev/stdout"
            accessLogFormat: '$remote_addr - $remote_user [$time_local] $http_host "$request" $status $body_bytes_sent $request_time "$http_referer" "$http_user_agent" $upstream_addr $upstream_status $upstream_response_time "$upstream_scheme://$upstream_host$upstream_uri"'
            accessLogFormatEscape: default
            errorLog: "/dev/stderr"
            errorLogLevel: "warn"
            configurationSnippet:
            main: |
            httpStart: |
            httpEnd: |
            httpSrv: |
            httpAdmin: |
            stream: |
            customLuaSharedDicts: []
            luaSharedDicts: []
            discovery:
            enabled: false
            registry: {}
            dns:
            resolvers:
      • 127.0.0.1
      • 172.20.0.10
      • 114.114.114.114
      • 223.5.5.5
      • 1.1.1.1
      • 8.8.8.8
        validity: 30
        timeout: 5
        vault:
        enabled: false
        host: ""
        timeout: 10
        token: ""
        prefix: ""
        prometheus:
        enabled: false
        path: /apisix/prometheus/metrics
        metricPrefix: apisix_
        containerPort: 9091
        plugins: []
        stream_plugins: []
        pluginAttrs: {}
        extPlugin:
        enabled: false
        cmd: ["/path/to/apisix-plugin-runner/runner", "run"]
        wasm:
        enabled: false
        plugins: []
        customPlugins:
        enabled: false
        luaPath: "/opts/custom_plugins/?.lua"
        plugins:
      • name: "plugin-name"
        attrs: {}
        configMap:
        name: "configmap-name"
        mounts:
        - key: "the-file-name"
        path: "mount-path"
        status:
        ip: "0.0.0.0"
        port: 7085
        trustedAddresses:
    • 127.0.0.1
      externalEtcd:
      host:
    • http://etcd.host:2379
      user: root
      password: ""
      existingSecret: ""
      secretPasswordKey: "etcd-root-password"
      etcd:
      enabled: false
      image:
      registry: docker.io
      repository: bitnamilegacy/etcd
      tag: latest
      prefix: "/apisix"
      timeout: 30
      auth:
      rbac:
      create: false
      rootPassword: ""
      tls:
      enabled: false
      existingSecret: ""
      certFilename: ""
      certKeyFilename: ""
      verify: true
      sni: ""
      containerSecurityContext:
      enabled: false
      service:
      port: 2379
      replicaCount: 3
      autoCompactionRetention: "1h"
      autoCompactionMode: "periodic"
      ingress-controller:
      enabled: true
      config:
      provider:
      type: apisix-standalone
      apisix:
      adminService:
      namespace: default
      gatewayProxy:
      createDefault: true
```shell
kubectl  get all
NAME                                            READY   STATUS    RESTARTS      AGE
pod/apisix-86cc7f54c9-9dfpg                     1/1     Running   0             5d20h
pod/apisix-ingress-controller-f6d5ff859-jfclf   2/2     Running   1 (11h ago)   5d20h

NAME                                            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/apisix-admin                            ClusterIP   10.68.37.18     <none>        9180/TCP       5d20h
service/apisix-gateway                          NodePort    10.68.21.244    <none>        80:32571/TCP   5d20h
service/apisix-ingress-controller               ClusterIP   10.68.25.105    <none>        8080/TCP       5d20h
service/apisix-ingress-controller-webhook-svc   ClusterIP   10.68.119.131   <none>        443/TCP        5d20h
service/kubernetes                              ClusterIP   10.68.0.1       <none>        443/TCP        97d

NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/apisix                      1/1     1            1           5d20h
deployment.apps/apisix-ingress-controller   1/1     1            1           5d20h

NAME                                                  DESIRED   CURRENT   READY   AGE
replicaset.apps/apisix-86cc7f54c9                     1         1         1       5d20h
replicaset.apps/apisix-ingress-controller-f6d5ff859   1         1         1       5d20h

···shell
kubectl get ingress apisix-admin -o yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
meta.helm.sh/release-name: apisix
meta.helm.sh/release-namespace: default
creationTimestamp: "2025-12-30T09:16:58Z"
generation: 4
labels:
app.kubernetes.io/instance: apisix
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: apisix
app.kubernetes.io/version: 3.14.1
helm.sh/chart: apisix-2.12.5
name: apisix-admin
namespace: default
resourceVersion: "24505354"
uid: 633cf3ae-a945-45b7-a2c2-38f08b89605d
spec:
ingressClassName: apisix
rules:

  • host: apisix-admin.wgy.inchtek.tech
    http:
    paths:
    • backend:
      service:
      name: apisix-admin
      port:
      number: 9180
      path: /*
      pathType: ImplementationSpecific

### Environment

- APISIX version (run `apisix version`):  3.14.1
- Operating system (run `uname -a`): Linux master-02 5.15.0-60-generic 66-Ubuntu SMP Fri Jan 20 14:29:49 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
- OpenResty / Nginx version (run `openresty -V` or `nginx -V`):  nginx version: openresty/1.27.1.2
- etcd version, if relevant (run `curl http://127.0.0.1:9090/v1/server_info`):  no etcd
- APISIX Dashboard version, if relevant: no
- Plugin runner version, for issues related to plugin runners: no

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionlabel for questions asked by users

    Type

    No type

    Projects

    Status

    ✅ Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions