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

Nginx配置Django+Vue同服务器部署时Vue路由直接访问404问题求解

问题根源

  • 原有location /块的root路径和try_files里的index路径不一致,且try_files末尾多余的=404会导致没有匹配到静态资源时直接返回404,没有正确fallback到Vue的index.html处理前端路由
  • 你额外添加的正则location优先级高于普通前缀location,会覆盖/backend/、/static/等预设的路径规则,同时逻辑错误引发无限重定向
  • 原有upstream配置的socket路径存在多余空格,可能导致Django服务连接异常

修正后完整Nginx配置

# the upstream component nginx needs to connect to
upstream myproject {
    # 移除了路径里的多余空格
    server unix:///tmp/myproject.sock;
}

server {
  listen 80;
  listen [::]:80;
  server_name serverurl.com;
  return 301 https://serverurl.com$request_uri;
}

server {
  listen 443 ssl;
  listen [::]:443 ssl;

  ssl_certificate /home/projects/myproject/ssl/ANY.serverurl.com.crt;
  ssl_certificate_key /home/projects/myproject/ssl/ANY.serverurl.com.key;

  server_name serverurl.com www.serverurl.com;
  access_log /home/projects/myproject/logs/nginx_access.log;
  error_log /home/projects/myproject/logs/nginx_error.log;

  location / {
      # 确认此处是你Vue打包后dist目录的实际路径,要和你本地存储路径匹配
      root /home/projects/myproject/vue/dist;
      # 先匹配对应路径的静态文件,找不到就直接返回index.html给Vue路由处理
      try_files $uri $uri/ /index.html;
  }
  
  location /backend/ {
    include /etc/nginx/uwsgi_params;
    uwsgi_pass myproject;
  }

  location /static/ {
    alias /home/projects/myproject/static/;
  }
  
  location /media/ {
    alias /home/projects/myproject/media/;
  }
}

配置生效步骤

  1. 删除你之前额外添加的正则location规则
  2. 替换原有配置为上述修正后的内容,注意确认root的路径和你实际Vue dist存放的路径一致
  3. 执行nginx -t测试配置语法是否正确
  4. 执行systemctl reload nginx重载配置即可生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:36:03