nginx 响应 404 Not Found(单页应用程序)

2024-01-22

我有一个带有常规浏览器路由器(没有哈希)的单页应用程序。每当有人浏览页面并点击刷新按钮时,nginx 都会尝试在此路径上查找文件。所以如果有人在mypage.com/aboutnginx 寻找about文件并以 404 Not Found 响应。如何解决这个问题?

我正在考虑用通配符指定一个位置 -mypage.com/* except /api不过,因为这个应用程序中的每个后端端点都以api。如何匹配除一个之外的所有路径?这就是我的配置的样子:

upstream frontend {
    server frontend:3000;
}

upstream backend {
    server backend:8000;
}

server {
    listen 80;

    location /api {
        proxy_pass http://backend;
        proxy_set_header Host            \$http_host;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
    }

    location / {
        proxy_pass http://frontend;
        proxy_redirect default;
    }
}

为什么您的代理请求前端应用程序?我假设您正在使用某种开发服务器来为您的前端应用程序提供服务。最好将前端应用程序构建为静态文件,并将它们作为常规静态文件提供服务,除了 nginx 之外不需要任何服务器。

至于你的问题,如果你将前端应用程序构建到静态文件中,你可以在 nginx 中配置位置,如下所示:

root /var/www/your_site;
location / {
    try_files $uri /index.html;
}

其中index.html是应用程序的入口点,根路径应配置为存储它的位置。

如果您仍然想通过 nginx 从开发服务器提供前端应用程序,您可以配置 nginx 来处理来自上游的错误并将错误页面指向开发服务器的根目录。

在这种情况下,以下指令应该可以帮助您:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors http://nginx.org/en/docs/http/ngx_http_core_module.html#error_page http://nginx.org/en/docs/http/ngx_http_core_module.html#error_page

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nginx 响应 404 Not Found(单页应用程序) 的相关文章

随机推荐

  • Django 表单和标题属性

    我需要使用属性 title 来渲染我的表单以进行 jquery 验证 以这种方式渲染我的表单怎么办
  • 自己编码的聊天中的 ListView Rowlayout

    我正在尝试做什么 我正在尝试创建一个必须不同行的聊天 对于每一行我都制作了一个自己的布局文件 但问题是其中一行的布局文件不适合屏幕 Question 我需要在行布局中更改哪些内容才能使其适合应有的效果 您会找到代码以及我正在尝试的打印屏幕
  • 为什么这个函数会多次触发?

    我正在填写这个清单 ul ul 使用 jquery 生成文件夹列表 生成以下 HTML ul li Item 1 li li Item 2 li li Item 3 ul li Sub Item li ul li ul
  • 如何在Jackson ObjectMapper的序列化中添加@JsonIgnore注释字段

    我需要添加 JsonIgnore序列化对象时带注释的字段Jackson ObjectMapper 我知道您可能会建议我删除 JsonIgnore我的类中的注释 但我需要它们在我的应用程序的某些部分可以忽略 在我的应用程序的另一部分我需要那些
  • 滥用比赛?

    您是否会考虑以下代码块匹配滥用 如果是这样 在没有大的 if else if 块的情况下 有什么更优雅的方法可以做到这一点 def sum base Int xs List Int Int base match case 0 gt 1 ca
  • “模糊引用”错误两次指向同一方法

    I used 这个绝妙的解决方案 https stackoverflow com questions 3509290 how to convert a linq result to datatable 3767520 3767520将 li
  • Enterprise Library 5.0安装错误

    此应用程序需要 NET Framework 3 5 SP1 请安装 net Framework 然后再次运行此安装程序 但系统已经安装了 net Framework 4 0 在添加删除程序中我可以看到以下两个条目 1 Microsoft N
  • Angular2:从javascript函数调用组件方法[重复]

    这个问题在这里已经有答案了 目前我正在尝试实现引导日期选择器 它使用jQuery 以及我的 Angular2 项目 这是我到目前为止所拥有的 import Component AfterViewInit Injector Inject fr
  • .ContextMenu 和 .ContextMenuStrip 之间的差异

    两者有什么区别 ContextMenu and ContextMenuStrip在 Windows 窗体中 我已经知道什么是ContextMenu是 但是怎么样ContextMenuStrip不同于ContextMenu 您可能想知道为什么
  • 如何将三角形标记添加到 SpreadsheetGear 网格的任何单元格角?

    这是 SpreadsheetGear Grid 的特定问题 我知道您可以向单元格添加注释 单元格会自动在右上角获得红色三角形标记 但我需要在任何单元格角落添加一个小三角形 不同颜色 来指示一些特殊的东西 有可能做到吗 更新 这是我根据丹尼尔
  • Linux 中 `cd //` 中的双斜杠 // 是什么意思? [复制]

    这个问题在这里已经有答案了 我输入了一个命令cd 代替cd 错误地 而不是像我期望的那样收到错误 shell Bash 显示了一个提示 就像我在 目录
  • 如何在 Keras 中实现 L2-norm pooling?

    我想向我的 CNN 添加一个全局时间池层 它具有三种不同的池函数 均值 最大值和 L2 范数 Keras 有平均池化函数和最大池化函数 但我还没有找到用于 L2 的池化函数 我自己该如何实现呢 我也在寻找这个 keras 中没有这样的开箱即
  • Tensorflow 中的多个会话和图形(在同一进程中)

    我正在训练一个模型 其中输入向量是另一个模型的输出 这涉及从检查点文件恢复第一个模型 同时从头开始初始化第二个模型 使用tf initialize variables 在同一过程中 有大量的代码和抽象 所以我只是将相关部分粘贴到此处 以下是
  • 如何让 Metro(React Native 打包器)忽略某些目录

    Problem 我的项目有一个 providesModule naming collision当试图跑步时react native run ios从命令行 它与自动生成的目录冲突dist 它是由另一个 npm 包 esdoc 创建的 我希望
  • XPath 如何处理 XML 命名空间?

    XPath 如何处理 XML 命名空间 If I use IntuitResponse QueryResponse Bill Id 为了解析下面的 XML 文档 我返回了 0 个节点
  • glsl lowp 随机数生成(用于图形)的好算法是什么?

    我需要一个随机数生成器来创建一些图形静态 我不是在寻找噪声算法 我只是想要白噪声 我所需要的只是 glsl 中的随机数生成器 具体来说 随着时间的推移 我将使用它为每个片段创建随机亮度偏移 要求 生成 0 0 到 1 0 之间的数字 不关心
  • 使用 for 循环替换 pandas 列每行中的单元格值

    请帮助我理解我的错误 我正在尝试更改我的一列 csv文件 我有 csv文件如下 sku name code k1 aaa 886 k2 bbb 898 k3 ccc 342 k4 ddd 503 k5 eee 401 我想将 sku 列中的
  • TFS 无法识别添加的项目 VS2013 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在使用 VS2013 和 TFS Online 当我添加一个新项目时 源代码管理不会将其识别为添加的项目 但 csproj 会使用新文件
  • 检查定时器是否正在运行

    我一直在尝试用计时器重新填充游戏生活 但每当我离开视图并返回时 计时器就会重复并变得更快 我尝试用以下方法解决这个问题Timer isValid函数仅在无效时运行计时器 因此它永远不会重复 但它似乎无法检查计时器是否在invalid在 if
  • nginx 响应 404 Not Found(单页应用程序)

    我有一个带有常规浏览器路由器 没有哈希 的单页应用程序 每当有人浏览页面并点击刷新按钮时 nginx 都会尝试在此路径上查找文件 所以如果有人在mypage com aboutnginx 寻找about文件并以 404 Not Found