You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker化Directus+Nginx反向代理的路径重定向问题

解决Nginx反向代理Directus后静态资源丢失/api前缀的问题

问题原因

Directus容器不知道自身运行在/api子路径下,导致生成的管理页面中,静态资源使用相对路径时,浏览器解析时丢失了/api前缀,进而请求错误的URL(如/admin/assets/...而非/api/admin/assets/...)。

最优解决方案:配置Directus的PUBLIC_URL环境变量

在Docker部署Directus时,添加环境变量PUBLIC_URL,指定其对外的完整访问路径:

# Docker run方式添加环境变量
docker run -e PUBLIC_URL=http://example.com/api/ ... directus/directus

# Docker Compose方式配置
services:
  directus:
    image: directus/directus
    environment:
      PUBLIC_URL: "http://example.com/api/"
      # 其他Directus环境变量...

配置后,Directus会自动为所有静态资源、路由添加/api前缀,生成的脚本引用会变成/api/assets/some-script-file.js,浏览器就能正确请求资源。

备选方案:调整Nginx配置(局限性较大)

若不想修改Directus配置,可新增Nginx规则代理/admin路径:

server {
    listen 80;
    server_name example.com;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    location /api/ {
        proxy_pass http://backend:8055/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # 新增代理/admin路径
    location /admin/ {
        proxy_pass http://backend:8055/admin/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

此方法仅临时解决/admin路径的资源问题,若Directus还有其他子路径(如/assets),仍需逐一添加规则,不如配置PUBLIC_URL彻底。

内容的提问来源于stack exchange,提问作者f_t

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 01:00:00