在 nginx 重写中发送额外的标头

2024-04-13

现在,我正在将我的应用程序的域从app.example.com to app.newexample.com使用以下内容nginx config:

server {
    server_name app.example.com;
    location /app/ {
        rewrite ^/app/(.*)$ http://app.newexample.com/$1;
    }
}

我需要显示一个弹出横幅来通知用户域名迁移。 我想以此为基础referrer或某种其他标头app.newexample.com

但是我如何在上面附加一个额外的标题rewrite这样 javascript 就会检测到该标头并仅在该标头存在时才显示横幅,因为用户直接访问app.newexample.com不应该看到那个弹出横幅吗?


问题是,当您“重写”为具有协议和主机名的 URI(即http://app.newexample.com/在你的情况下),Nginx 发出公平的 HTTP 重定向(我猜代码将是 301 又名“永久重定向”)。这使得您只剩下两种机制来将任何信息传输到新 URL 的处理程序:

  • cookie
  • 网址本身

由于您要将用户重定向到新域,因此不能使用 cookie。但即使在公共域的情况下,我也会选择 URL 来传输此类信息,例如

server_name app.example.com;
location /app/ {
    rewrite ^/app/(.*)$ http://app.newexample.com/$1?from_old=yes;
}

这使您可以自由地在 Nginx 或浏览器(使用 JavaScript)中进行处理。你甚至可以做你最初想做的事,在新的应用服务器 Nginx 配置中为 JavaScript 发出一个特殊的 HTTP 标头:

server_name app.newexample.com;
location /app {
  if ($arg_from_old) {
    add_header X-From-Old-Site yes;
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 nginx 重写中发送额外的标头 的相关文章

随机推荐

  • 无法使用 Angular 和 Spring Security 设置身份验证标头

    我在让 Angular CORS SpringSecurity 和基本身份验证正常运行时遇到困难 我有以下 Angular Ajax 调用 我试图将标头设置为在请求中包含基本授权标头 var headerObj headers Author
  • java.lang.noclassdeffound错误:org.ksoap2.serialization.SoapObject

    我收到这个 no class def 错误 org ksoap2 serialization SoapObject自从我更新了 Eclipse ADT 插件和 SDK 管理器后就出现错误 我正在使用ksoap2 android assemb
  • java中另一个类可以调用类的main()方法吗

    Can a main java中另一个类可以调用类的方法吗 e g class class1 public static void main String args class class2 public static void main
  • 在 ASP.NET 控件中访问全局资源

    meta resourcekey WizardStep1Resource1 这就是我用来访问App LocalResources 我如何访问资源App GlobalResources 解决方案 创建一个名为Globalresource re
  • Yii2:如何使用 301 重定向旧 URL?

    由于 SEO 目的 我想将旧版本网站中的一些 URL 重定向到 Yii2 中的新版本 例如 about us php to about 我怎么做 我不能使用 htaccess 而且我不能使用urlManager规则 因为需要设置HTTP响应
  • 如何发送带有变量的 GraphQL AJAX 查询?

    我正在尝试使用 GraphQL 对 GitHub 进行 API 调用 我已经能够使用静态 graphQL 调用成功地调用数据 但是我在调 用中添加变量 var 条目 时遇到问题 以便我可以基于更改调用用户在网络应用程序中提供的输入 我使用
  • 索引操作到底发生了什么?

    今天我正在为一个包含 20 亿条记录的巨大表建立索引 我以为 MySQL 会吃掉我的 2TB 驱动器 磁盘消耗不断增加到 400GB 然后是 500GB 最后下降到 180GB MySQL 说成功添加了索引 为什么空间会增加 最后发生了什么
  • 当我从 NSManagedObjectContext 获取数据时出现错误

    我运行我的应用程序 然后获取我的数据 数据没问题 当我第二次跑步时 我对自己的旧价值观产生了错误 怎么了 BOOL application UIApplication application didFinishLaunchingWithOp
  • 将 Java 代码移植到 ObjC 时,如何最好地表示已检查的异常?

    我正在致力于将 Java 代码库移植到 Cocoa Objective C 以在桌面 Mac OS X 上使用 Java 代码有lots and lots带有检查异常的方法 例如 double asNumber throws FooExce
  • 使用 RVM 在 Ubuntu 上安装 Rails Path

    我是一个运行 Ubuntu 10 04 并尝试安装 Rails 的 Linux 菜鸟 我首先安装了ruby 然后安装了RVM 然后下载并安装了rubygems 然后安装了rails Rails 似乎只有在命令前面有 sudo 时才会响应 如
  • 如何将列表视图中行的值传递给按钮

    我创建了一个自定义listview using SimpleAdapter and in 列表视图的每一行我都放了一个按钮有单一 ID 我想要得到position每行传递按钮 但我每行都有一个按钮 id 我想要当我点击按钮它找到行的位置并开
  • 找到最大的素数因子?

    我需要找到 13195 的质因数是 5 7 13 和 29 最大的是377 数字 600851475143 的最大质因数是多少 include
  • HTTP 错误 500.31 - ANCM 无法在 IIS 中找到本机依赖项

    我尝试运行一个Blazor应用 Web Server runs NET Core 3 0 Web Client runs NET Standard 2 0 Web Shared runs NET Standard 2 0 发布并上传应用程序
  • 在与表单相同的模态窗口中加载 php 成功消息

    您好 我正在尝试让我的 php 表单成功 或错误 消息加载到表单实际所在的模态窗口中 我想只在模态中打开表单 而不必以任何原因切换页面 我一直在搜索 S O 但找不到类似的东西 也许我没有问正确的问题 我不知道 我的代码目前如下所示 编辑
  • 抽象 CRUD 控制器是个好主意吗?

    我们正在使用 ASP NET MVC 开发一个相当大的应用程序 一开始我们发现拥有一个具有常见 CRUD 操作 新建 保存 删除 以及默认列表操作的抽象基本控制器可能很有用 在我们的例子中 我们有 20 多个实体通过这种控制器进行管理 这有
  • HTML 代码检查 PhpStorm 中分成多个文件的块

    有没有办法告诉 PhpStorm 仅评估 header php 和 footer php 就像浏览器在运行 index php 时所做的那样 考虑一个包含 4 个文件的项目 index php 服务器端内容 业务逻辑 header php
  • Android:如何检测用户何时停止对着麦克风说话

    我有一个 Android 应用程序 在应用程序启动时开始从麦克风录音 在我当前的版本中 用户必须按 停止 按钮才能停止录制 如何检测用户已停止说话并使用它来触发录音机停止 类似于 Android 中语音识别功能的实现 用户停止说话 然后语音
  • 使用类似“标签”的单元格设置集合视图

    我一直在与客户合作UICollectionViewFlowLayout调整细胞之间的空间 这样我就可以在我的细胞中获得良好的流动collectionView 但使用我当前的代码 我无法弄清楚如何在不 破坏 行数的情况下调整单元格大小 这使得
  • Haskell 中模拟对象的身份

    用面向对象的语言编写模拟时 每个对象都有一个标识 即一种将其与模拟中的其他对象区分开来的方法 即使其他对象具有完全相同的属性 一个对象无论随着时间的推移发生了多大的变化 都会保留其身份 这是因为每个对象在内存中都有唯一的位置 我们可以用指针
  • 在 nginx 重写中发送额外的标头

    现在 我正在将我的应用程序的域从app example com to app newexample com使用以下内容nginx config server server name app example com location app