具有 HTML5 应用程序缓存的单页应用程序的 Nginx 配置

2024-01-04

我正在尝试构建一个利用 HTML5 应用程序缓存的单页应用程序,它将为每个不同的 URL 缓存应用程序的全新版本,因此我必须将每个人重定向到/并让我的应用程序随后路由它们(这是使用的解决方案devdocs.io http://devdocs.io).

这是我的 nginx 配置。我希望所有请求发送文件(如果存在),重定向到我的 API:/auth and /api,并将所有其他请求重定向到index.html。为什么以下配置导致我的浏览器显示存在重定向循环?如果用户点击位置块#2并且他的路线与静态文件不匹配,他将被发送到位置块#3,这将把他重定向到“/”,该“/”应该点击位置块#1并提供index.html,对吗?是什么导致了这里的重定向循环?有更好的方法来实现这一点吗?

root /files/whatever/public;
index index.html;

# If the location is exactly "/", send index.html.
location = / {
    try_files $uri /index.html;
}

location / {
    try_files $uri @redirectToIndex;
}

# Set the cookie of the initialPath and redirect to "/".
location @redirectToIndex {
    add_header Set-Cookie "initialPath=$request_uri; path=/";
    return 302 $scheme://$host/;
}

# Proxy requests to "/auth" and "/api" to the server.
location ~* (^\/auth)|(^\/api) {
    proxy_pass http://application_upstream;
    proxy_redirect off;
}

该循环消息表明 /files/whatever/public/index.html 不存在,因此当 location / 中的 try_files 等于时找不到 $uri/index.html,因此 try_files 始终在内部将这些请求重定向到执行外部重定向的 @ 位置。

除非您的设置比您所概述的更复杂,否则我认为您不需要做那么多。对于单文件 js 应用程序,您不需要外部重定向(甚至内部重定向)或服务器端 cookie 发送。 app 和 api 的正则表达式匹配也不太正确。

root /files/whatever/public;
index index.html;

location / {
    try_files $uri /index.html =404;
}

# Proxy requests to "/auth" and "/api" to the server.
location ~ ^/(auth|api) {
    proxy_pass http://application_upstream;
    proxy_redirect off;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有 HTML5 应用程序缓存的单页应用程序的 Nginx 配置 的相关文章

  • 如果 CodeIgniter 方法不存在,则重定向到默认方法。

    我正在使用 CodeignIter 并且正在寻找一种在被调用方法不存在时为单个控制器编写自定义处理例程的方法 假设你打电话www website com components login In the components控制器 没有一个方
  • 由于浏览器设置的标头,Safari 拒绝重定向的 CORS 请求

    Summary Safari 拒绝一些涉及重定向的 CORS 请求 声称某些标头是不允许的 但该标头从来不是由脚本请求的 而是由浏览器添加的 所以我认为这应该不重要 Safari 的行为是一个错误吗 规格有问题吗 或者 事情变成这样是有原因
  • Laravel 5 - URL 查询字符串的 NGINX 服务器配置问题

    Laravel 没有从 URL 查询字符串接收任何 GET 变量 GET 和 Input all 为空 Example example app ex login php country US country US 从未出现在我的 GET 变
  • ExpressJS - DELETE 请求后 res.redirect

    我一直在寻找如何执行此操作 我正在尝试在发出删除请求后重定向 这是我正在使用的代码没有重定向 exports remove function req res var postId req params id Post remove id p
  • nginx设置问题

    我知道这不是一个直接的编程问题 但是 stackoverflow 上的人似乎能够回答任何问题 我有一台运行 Centos 5 2 64 位的服务器 非常强大的双核 2 服务器 具有 4GB 内存 它主要提供静态文件 Flash 和图片 当我
  • 使用 nginx 在云上部署 django 和 React

    我有一个 digitalocean 服务器 并且已经使用 Gunicorn 和 nginx 部署了 Django 后端服务器 如何在同一台服务器上部署 React 应用程序 您可以构建 React 应用程序并使用 Nginx 提供其静态文件
  • Apache 从子域重写为 www 但保留所有永久链接

    我已经研究了大约 2 个小时 虽然大多数主题都很相似 但没有一个解释如何做我想做的事情 我正在将一个结构为 blog domain com 的博客移至 www domain com blog 当我重定向时 我需要保留博客文章的永久链接 所以
  • 如何处理 REST api 中的 php 通知、警告和错误?

    在 REST API 中 200 响应表明操作成功 PHP 默认情况下直接在响应正文中输出错误消息 而不更改响应代码 在 SPA 中 用户无法直接看到响应文本 因此 当应用程序未按预期工作时 我通过 FireBug 检查响应正文 以检查可能
  • WordPress 3.0 .htaccess 到 nginx 重写规则的转换

    RewriteEngine On RewriteBase BASE uploaded files RewriteRule files index php L RewriteCond REQUEST URI wp content plugin
  • 获取请求的客户端 IP 地址而不是 Cloudflare 的 IP 地址

    Cloudflare 会更改传入请求的 IP 地址 因为 Cloudflare 是我的网站和互联网之间的中间件 代理 我该怎么办获取请求的初始IP地址 而不是 Cloudflare 的 IP 地址 我听说过mod cloudflare但是这
  • 使用 URL 参数 ID 编号范围进行 HTACCESS 重定向

    我希望有人可以提供帮助 因为事实证明这很难弄清楚 我试图通过 HTACCESS 和 mod rewrite 重定向许多 URL 参数 ID 值在特定范围内 从 1 到 7603 的页面 这是我到目前为止所拥有的
  • 如何使用 Nginx 在子文件夹/URL 前缀上托管 Flask 应用程序?

    我有一个 Flask 应用程序 我想将其托管在网站的子文件夹中 例如example com cn 我像这样配置我的 nginx location cn proxy pass http localhost 8000 所以如果我访问exampl
  • .net core nginx 托管套接字不允许 http post

    我正在尝试创建一个具有 http 功能 包括 http post 功能 以及 Web 套接字 例如 signalR 的网站 我正在尝试使用 nginx 在 ubuntu 服务器上托管此网站 一般来说 nginx 上的设置是这样的 serve
  • 无法处理从 HTTP/HTTPS 协议到其他不同协议的重定向

    基本上 我试图从 CNet 的 Download com 获取 EXE 所以我创建了网络解析器 到目前为止一切进展顺利 这是直接从他们的网站提取的示例链接 http dw com com redir edId 3 siteId 4 oId
  • 301 重定向 .htaccess

    如何进行301重定向 例如 子目录 Blog to blog 与 htaccess Redirect 301 Blog blog 或者使用类似的东西http www htaccessredirect net index php http w
  • NGinx 和 Django,提供大文件 (3gb+)

    我在提供大文件下载 上传 3GB 时遇到一些问题 由于我使用的是 Django 我猜想提供文件的问题可能来自 Django 或 NGinx 在我启用 NGinx 的网站中 我有 server client max body size 4G
  • Nginx - 如何访问客户端证书的使用者备用名称 (SAN) 字段

    我有一个 Nginx 服务器 客户端使用包含特定 CN 和 SAN 的客户端证书向该服务器发出请求 我希望能够提取该客户端证书的 CN 通用名称 和 SAN 主题备用名称 字段 粗略的示例配置 server listen 443 ssl s
  • 将在gunicorn上运行的Flask应用程序代理到nginx中的子路径

    我有一个 Flask 应用程序在gunicorn上运行http 127 0 0 1 4000 gunicorn b 127 0 0 1 4000 webapp app 现在我想使用nginx作为反向代理和转发http myserver co
  • nginx 重写文件夹重定向

    all 我正在尝试在 nginx 中做一些事情来重定向对文件的所有调用 images 成为 assets images 有人可以帮我重写规则吗 给予 301 永久移动状态 以下是使用较新版本的 Nginx 执行此操作的首选方法 locati
  • htaccess 文件中的动态重写

    我正在我的 htaccess 文件中进行一些重写和重定向 我这样做的原因是因为我正在为现有网站开发新的设计和布局 因此我需要重定向以保持谷歌排名等 所以旧的 现有的 URL 看起来像这样 news internet shopper numb

随机推荐

  • mkdir:无法创建目录:协议错误:Virtualbox 共享文件夹

    我正在尝试在 Virtualbox 共享文件夹中从主机到访客创建文件夹和文件 但我收到这个错误mkdir cannot create directory Protocol error Below are steps i performed
  • Qt - 如何检测应用程序是在 GNOME 还是 KDE 上运行?

    我想知道我怎么能做这样的事情 使用 Qt 我查看了文档 但找不到任何方法来检查外部进程是否正在运行 if pidof ksmserver then echo KDE running KDE specific stuff here elif
  • 连续调用多个函数

    我知道这个问题已经被问过好几次了 但是我似乎无法找到适用于我的代码的解决方案 等到带有动画的函数完成后再运行另一个函数 https stackoverflow com questions 12116505 wait till a funct
  • LoadControl,WebMethod 中的用户控件

    我正在尝试通过发送电子邮件WebMethod下面是我通常在常规回发中使用的代码 WebMethod public static void SendEmail string name string phone string emailaddr
  • Python 函数中的打印与返回

    我这些天正在学习Python 我想问一下哪种代码更适合在现实世界中编写并适用于实际应用 不过 这两个代码给出了相同的输出 在第一个函数中 我在内部使用了 return 然后在调用时必须使用 print 另一方面 我在内部使用了 print
  • 父 div 中的中心图像元素

    如何将图像元素设置在父 div 内居中 我想这样做 以便图像的中间始终位于他父母的中心 另外我希望图像始终具有 100 的高度 注意 我不想拉伸图像宽度 请参阅此处的示例 http jsfiddle net Ex5ax 5 http jsf
  • bootstrap 3 中的 footable 未初始化

    我试图通过 twitter bootstrap 集成的优秀 footable 插件未初始化 也就是说 感谢我的 firebug 检查器 我可以看到该表是由 footable 插件处理的 但我总是想隐藏该行 data hide all 是可见
  • 使用反射的 == 运算符

    使用反射后的对象比较 var a new A a aa b 1 var b new A a aa b 2 Type type typeof A object old type GetProperty a GetValue a object
  • 在返回与其对象相同类型的值的最终方法中使用泛型

    考虑以下不可变类 A B extends A C extends B D extends C A类有一个方法叫做process获取类型的参数A 然后返回调用对象类型的值 public class A public final
  • javascript RAM内存使用情况[重复]

    这个问题在这里已经有答案了 我有一个可以上传图片的网站 我在上传之前从客户端进行裁剪 然后在服务器端进行新的优化 在移动设备上 当没有可用 RAM 时出现故障 如果没有内存 如何从 JavaScript 获取 RAM 内存使用情况以跳过 C
  • 在 HTML/CSS 中检测没有 JavaScript 的 IE11 [重复]

    这个问题在这里已经有答案了 我一直在使用以下技巧来制作特定于浏览器的 HTML div class not ie div 这不适用于 IE11 有什么新的技巧可以使用吗 我可以使用 JavaScript 检测它 使用 CSS 功能 功能检测
  • 在 DB2 中将十进制转换为日期

    我的表中有一列的日期值为十进制 例如20180715对于日期15 07 2018 我想将其转换为MMDDYYYY格式 例子 给定十进制值20180715被转换为07152018 怎么做 尝试这样的事情 select VARCHAR FORM
  • 在 pandas 数据框中查找连续的段

    我有一个 pandas DataFrame 其中包含在连续时间点进行的测量 随着每次测量 被观察的系统在每个时间点都有不同的状态 因此 DataFrame 还包含一列 其中包含每次测量时的系统状态 状态变化比测量间隔慢得多 因此 指示状态的
  • 如何删除 Jquery PrintElement 中的 url 和页脚

    插件链接 http projects erikzaadi com jQueryPlugins jQuery printElement Sample 我正在使用上面的插件来打印网页的一部分 我在这里的查询是如何删除与打印页面一起显示的网址和页
  • Eclipse XWT 已投入生产?

    有人用过吗Eclipse XWT http wiki eclipse org E4 XWT在不平凡的 例如比教程更复杂的东西 环境中 我不认为 Eclipse4 本身使用它 它真的比 SWT 有什么优势吗 XWT 是一个声明式 UI 框架
  • 查找 Rails 3 中的最新记录

    我想知道是否有办法找到rails3表中的最新记录 给定一个 Post 模型 你可以这样做 post Post order created at last 我不只是做的原因 post Post last是因为它总是默认按您的主键排序 通常id
  • Spark 2.x 中结构化流连接两个流的解决方法

    我有一个配置流 不经常更改 但如果有更新 它将是一条消息 和另一个原始数据点流 据我了解 目前 Spark 不支持加入流数据集或数据帧 有没有好的方法来解决这个问题 是否可以将其中一个流数据集 快照 为静态数据集 可能是配置数据集 因为它的
  • 如何在 JQuery When - Then 语句中循环处理 Ajax 请求?

    我正在尝试从 API 异步加载一堆数据 当加载所有数据时 我想触发一个事件来加载所有数据 我遇到的问题是我使用的 API 将响应对象的数量限制为 5 我可能需要检索 30 40 个响应对象 所以我想要做的是创建一个 when then 语句
  • 将全局变量传递给 vue 组件属性

    我正在尝试将 php laravel 数据从自定义全局变量传递到我的组件 我见过这样的例子new Vue 直接进入区域 但我还没有看到任何方法可以通过直接进入组件来传递它
  • 具有 HTML5 应用程序缓存的单页应用程序的 Nginx 配置

    我正在尝试构建一个利用 HTML5 应用程序缓存的单页应用程序 它将为每个不同的 URL 缓存应用程序的全新版本 因此我必须将每个人重定向到 并让我的应用程序随后路由它们 这是使用的解决方案devdocs io http devdocs i