当前位置: 首页 > news >正文

Nginx部署Vue项目,网页界面返回404 Not Found

描述:

Windows Sever服务器 使用Nginx部署Vue项目,其中Nginx端口设置81,http://localhost:81可以访问,但是http://localhost:81/TechnicalArticle却返回404 Not Found

问题原因:

Vue 项目在部署后,通常只有一个入口文件 index.html。Vue Router 在 history 模式下,像 /TechnicalArticle 这样的路径在前端路由中是存在的,但在服务器上并没有对应的物理文件或目录

当你直接在浏览器地址栏输入 http://localhost:81/TechnicalArticle 并回车时,浏览器会向 Nginx 请求这个路径的资源。Nginx 默认会尝试在它的根目录下寻找名为 TechnicalArticle 的文件或文件夹,结果当然是找不到,于是返回 404。

解决:

在nginx配置文件中添加一条指令:

重新加载nginx就可以。

AI回答:

🔧 配置 Nginx 接管路由

解决这个问题的核心思路是:让 Nginx 对于不存在的路径,都返回 Vue 应用的入口文件 index.html,然后由 Vue Router 接管并解析正确的路由。

你需要修改 Nginx 的配置文件(通常名为 nginx.conf 或在你 conf.d 目录下的自定义配置文件)。以下是几种常见的配置方法,你可以根据喜好选择一种。

配置方法说明优点
try_files 指令按顺序检查文件是否存在,最终均指向 index.html
推荐,语法直观,配置简洁
try_files + 命名Location通过 @router 命名位置进行重写
逻辑清晰,可读性好

下面是具体的配置示例,你只需要在 server 块中找到 location / 部分,并进行修改。

方法一:使用 try_files 指令(推荐)

这是最常用和简洁的配置方式

nginx

server {listen 81;server_name localhost;root /your/vue/project/dist; # 请替换为你的Vue项目dist目录的实际路径index index.html;location / {try_files $uri $uri/ /index.html; # 关键配置}# 可选:如果你的Vue项目需要请求后端API,可以在这里配置代理# location /api/ {#     proxy_pass http://your_backend_api_address/;# }
}
  • try_files $uri $uri/ /index.html;:这行配置告诉 Nginx,先尝试寻找与请求URI完全匹配的静态文件($uri),如果没找到,再尝试寻找同名的目录($uri/),如果还是没找到,就把请求交给 /index.html 处理。

方法二:使用 try_files 配合命名 Location

这种方式逻辑更清晰,尤其适合需要添加更多重写规则的复杂场景

nginx

server {listen 81;server_name localhost;root /your/vue/project/dist; # 请替换为你的Vue项目dist目录的实际路径index index.html;location / {try_files $uri $uri/ @router; # 先尝试寻找文件,失败则转给 @routerindex index.html;}location @router {rewrite ^.*$ /index.html last; # 将所有请求重写到 index.html}
}

📝 配置生效步骤

  1. 保存配置:将你选择的配置写入 Nginx 配置文件。

  2. 检查语法:在终端运行 nginx -t 命令,检查配置文件语法是否正确。如果看到 syntax is oktest is successful 的提示,就说明配置正确。

  3. 重载配置:运行 nginx -s reload 命令,使新的配置生效,而无需重启整个 Nginx 服务。

完成以上步骤后,再访问 http://localhost:81/TechnicalArticle,页面应该就能正常显示了。

⚠️ 补充说明与提醒

  • 路由模式确认:这个解决方案是针对 Vue Router 的 history 模式的。如果你的项目使用的是 hash 模式(URL 中有 #),则不会有这个问题,但也无需此配置。

  • 配置位置:请确保上述配置是写在 location / 块中,并且注意路径的匹配优先级。如果你的 Nginx 配置中还有其他更具体的 location 块(比如处理 API 代理的 location /api/),需要将它们放在 location / 块之前,因为 Nginx 会优先匹配更具体的规则。

  • 路径权限:请确保 Nginx 进程有权限访问你设置的 root 目录。

http://www.dtcms.com/a/486989.html

相关文章:

  • 建设部招标网站郑州企业建设网站有什么好处
  • 天硕国产工业级固态硬盘:主动浪涌防护,破解工业存储安全难题
  • 多重防护设计:BL-08plus如何杜绝交叉污染保障检测安全
  • 小说一键生成动漫重庆seo整站优化效果
  • dz门户网站模板比较有名的公司网站
  • 中小企业智能云MES系统源码,实时采集生产现场数据,优化生产流程
  • 建设网站的一般步骤是机械设备网站源码
  • IIS 配置和重写模块下载
  • Centos Stream 9 中Docker安装出现 download.docker.com:443 的问题解决
  • 医院 AI + 冷热源集群控制系统:医疗场景下的能效与安全双保障方案​
  • 初始yolo
  • 知名做网站哪家好wordpress ckplay播放
  • 什么程序做网站安全网站集约建设后网站域名规范
  • 自己做网站 知乎兰州网络推广电话
  • 隧道COVI检测仪:守护隧道安全与畅通
  • MySQL数据库基本命令的8个模块
  • HIS系统天花板,十大核心模块,门诊/住院/医保全流程打通,医院数字化转型首选
  • 做营销型网站的公司做医疗器械网站怎么找高清大图
  • 网站建设教程学习在百度平台如何做营销
  • 【日常学习】10-15 学习re
  • 跨平台驱动开发:打造兼容多款MCU的硬核方案
  • Linux文件存储结构原理:从dentry到inode再到硬链接
  • 丹阳网站怎么做seo电商网站开发文档
  • 简单使用Marker
  • 网站开发 盈利百度网游排行榜
  • elementUI 表单验证-联动型校验
  • vue2+elementUi实现自定义表格框选复制粘贴
  • Home Assistant-IOT模块
  • R Excel 文件:高效数据处理与可视化分析利器
  • 有做敦煌网站的吗创建网站 英文