Strapi+Nginx+Docker部署异常:后台改数据触发Vue Router路径错误
问题分析:Strapi管理面板启用Nginx后修改数据报错
问题场景
未启用Nginx时,可正常访问并使用Strapi管理面板;但启用Nginx后,虽能进入面板,尝试修改数据时却出现以下错误:
[Vue Router warn]: No match found for location with path "/content-manager/init"
相关配置文件
nginx.conf
events { } http { server { listen 80; server_name localhost; location / { proxy_pass http://nuxt:3000; 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; } location /admin/ { # Strapi Admin Panel proxy_pass http://strapi-backend:1337/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; } } }
docker-compose.yml
nginx: image: nginx:latest container_name: nginx-proxy ports: - "80:80" volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf depends_on: - nuxt - strapi-backend strapi-backend: container_name: strapi-backend build: ./backend image: strapi-backend:latest restart: unless-stopped environment: DATABASE_CLIENT: ${DATABASE_CLIENT} DATABASE_HOST: strapi-backendDB DATABASE_NAME: ${DATABASE_NAME} DATABASE_USERNAME: ${DATABASE_USERNAME} DATABASE_PORT: ${DATABASE_PORT} JWT_SECRET: ${JWT_SECRET} ADMIN_JWT_SECRET: ${ADMIN_JWT_SECRET} DATABASE_PASSWORD: ${DATABASE_PASSWORD} STRAPI_CORS_ALLOWED_ORIGIN: ${STRAPI_CORS_ALLOWED_ORIGIN} STRAPI_CORS_ALLOWED_SELF_ORIGIN: ${STRAPI_CORS_ALLOWED_SELF_ORIGIN} volumes: - ./backend/config:/opt/app/config - ./backend/src:/opt/app/src - ./backend/package.json:/opt/package.json - ./backend/package-lock.json:/opt/package-lock.json - ./.env:/opt/app/.env - ./backend/public/uploads:/opt/app/public/uploads ports: - '1337' depends_on: - strapi-backendDB strapi-backendDB: container_name: strapi-backendDB platform: linux/amd64 restart: unless-stopped image: postgres:14.5-alpine environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} volumes: - strapi-backend-data:/var/lib/postgresql/data ports: - '5432' volumes: nuxt_node_modules: proxy_node_modules: emails_node_modules: payments_node_modules: strapi-backend-data:
问题成因
API请求路由匹配错误:
Nginx当前只代理了/admin/路径到Strapi,但Strapi管理面板在修改数据时,会调用如/content-manager/init这类根路径下的核心API接口,这些请求会被Nginx的/规则优先匹配,转发到Nuxt服务而非Strapi后端,导致前端无法找到对应路由,抛出Vue Router匹配错误。缺失必要的反向代理头部:
Strapi管理面板需要X-Forwarded-Prefix头部来识别自身的访问路径前缀,当前Nginx配置未添加该头部,可能导致前端生成的API请求路径出现错误,进一步引发路由匹配问题。
内容的提问来源于stack exchange,提问作者xavi zamora
相关产品推荐
相关产品推荐

