nginx conf /具有多个映射)到同一变量

2023-11-26

我们有一个多站点设置,需要将域和域/子文件夹映射到变量。这样编程就知道要加载哪个版本。

我们的商店具有单独的域,并且可以通过以下方式捕获:$http_host还有domain.com/-string-locale-here- 并被捕获$http_host$uri和一个匹配命令

不知怎的,下面的方法不起作用。这可能是因为有两个映射命令,都映射到同一个变量$storecode

或者可能出了什么问题?

map $http_host $storecode {
 default dom_nl;
 domain.com dom_nl;
 domain.de dom_de;
 store.com str_de;
 }

map $http_host$uri $storecode { 
  ~^store.com/en.* str_en;
  ~^store.com/fr.* str_fr;
}

When default如果未在映射块中指定,则默认结果值为空字符串。所以,就你而言,无论价值如何$storecode在第一个映射块中设置为,它在第二个映射块中被替换为空字符串。

由于地图变量在使用时进行评估,因此您无法设置$storecode作为第二个映射块中的默认值,因为这会导致无限循环。

所以解决方案是在第一个map块中引入一个临时变量,然后在第二个块中将其用作默认值:

map $host $default_storecode {
    default dom_nl;
    domain.com dom_nl;
    domain.de dom_de;
    store.com str_de;
}

map $host$uri $storecode {
    default $default_storecode;

    ~^store.com/en.* str_en;
    ~^store.com/fr.* str_fr;
}

或者,您可以将这两个地图块合并为一个:

map $host$uri $storecode {
    default           dom_nl;

    ~^domain.com.*    dom_nl;
    ~^domain.de.*     dom_de;

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

nginx conf /具有多个映射)到同一变量 的相关文章

随机推荐

  • 在 setup.cfg 中正确使用 PEP 508 环境标记

    我正在尝试利用PEP 496 环境标记 and PEP 508 Python 软件包的依赖规范通过指定仅在特定操作系统上有意义的依赖关系 My setup py看起来像这样 import setuptools assert setuptoo
  • 用于监听 YouTube HTML5 播放器中 URL 更改的 JavaScript

    我正在编写一个 Chrome 扩展程序 因此我需要能够侦听 YouTube URL 中的更改 即查看您是否切换了视频 YouTube 使这变得困难 因为其 HTML5 视频播放器没有整个页面重新加载 没有 URL 片段更改 无法侦听 has
  • 训练期间损失没有减少(Word2Vec、Gensim)

    哪些情况会造成损失model get latest training loss 每个时期都会增加 用于训练的代码 class EpochSaver CallbackAny2Vec Callback to save model after e
  • Python函数在二进制数组中查找1的索引

    我有一个看起来像这样的数组 1 0 1 0 0 1 我想得到那些有 1 的索引 所以在这里我会得到一个数组 0 2 5 然后基于它我会创建一个新的数组 它接受这些数字并用它们对 2 求幂 所以最后的数组是 2 0 2 2 2 5 有没有办法
  • 如何在 Python 中创建守护进程?

    在谷歌上搜索揭示 x2 代码片段 第一个结果是这段代码的配方其中有很多文档和解释 以及下面的一些有用的讨论 然而 另一个代码示例虽然不包含太多文档 但包含用于传递启动 停止和重新启动等命令的示例代码 它还创建一个 PID 文件 可以方便地检
  • 使用 php 设置 firebase v3 自定义身份验证

    我正在尝试按照以下指南使用 google 的新 firebase sdk 设置自定义身份验证 https firebase google com docs auth server use a jwt library在 samble 代码中它
  • i18n 错误:控制器和模板使用不同的隐式语言

    控制器 def test Action implicit request gt import play api i18n val msg Messages error invalid implicit val langInControlle
  • 是否可以在运行时动态加载 Svelte 模板?

    我查看了文档
  • 构建后给 app.config 另一个名称吗?

    众所周知 当您使用 app config 文件构建项目时 它会被复制到 bin 目录并重命名为 targetFileName config 是否可以将其称为其他名称 例如 如果我的可执行文件名为 myApplication exe 我可以使
  • 如何为 RecyclerView 创建上下文菜单

    如何实现上下文菜单RecyclerView 显然是在打电话registerForContextMenu recyclerView 不起作用 我从一个片段中调用它 有人成功实施过这个吗 感谢您的信息和评论 我能够实现ContextMenu对于
  • 编写 PHP 文件以从 CSV 读取并执行 SQL 查询

    我想要一个 PHP 脚本来读取以下格式的 CSV 文件中的内容 id sku 1 104101 2 105213 总共有 1486 个条目 我认为最好使用 for 循环而不是 while EOF 之后 我想对名为m118的数据库 表cata
  • 数据访问层的设计模式

    你可能会觉得这是家庭作业 为此我很抱歉 我已经搜索过但找不到正确的答案 所以我的问题是 我有几个类 每个类都有一个保存方法 所以我创建了一个单独的类来处理数据库 namespace HospitalMgt Data public stati
  • 如何使用 Hibernate 仅更新所有实体属性的一部分

    我收到一个包含 30 个字段的 JSON 我的实体是根据该 JSON 构建的 问题是 不应更新两个字段 两个日期 如果我使用entity merge 两个字段都会更新 如何避免这两个字段被更新 也许使用 criteria Example 有
  • 为什么short是2字节对齐的?

    这是 C 结构体的声明 struct align char c 1 byte short s 2 bytes 在我的环境中 sizeof structalign 为 4 填充 1 字节位于 char c 和 short s 之间 有人说这是
  • 在 F# 中编写符合 CLS 的代码

    我对 F 非常陌生 我开始在 OpenGL 之上编写我的函数包装器 我还打算用它来编写一个图形引擎 该引擎应该与所有 Net 语言具有互操作性 但很难找到有关 F 中哪些代码结构不符合 CLS 的信息 例如 我已经知道一些不符合 CLS 的
  • Spring Security、REST基本身份验证问题

    在使用 Spring 进行基本身份验证时 我遇到了与 HTTP 响应标头 Access Control Allow Origin 相关的问题 当我手动进行身份验证时 如下面的代码 我使用的是 REST RequestMapping valu
  • matplotlib 标准颜色图用法

    我正在使用 matplotlib 1 3 0 并且有以下内容 import matplotlib pyplot as plt cmap plt cm jet plt contourf 12 2 8 2 levels 0 1 3 5 1 3
  • 如何在 Service 构造函数中对 Controller 进行单元测试并模拟 @InjectModel

    我在对控制器进行单元测试时遇到问题 并收到错误 Nest 无法解析我的服务的依赖项 为了获得最大的覆盖范围 我想对控制器和相应的服务进行单元测试 并想模拟猫鼬连接等外部依赖项 同样 我已经尝试了以下链接中提到的建议 但没有找到任何运气 ht
  • Android Studio 更新后构建项目中的classes.jar 中存在重复类

    我最近将 Android Studio 更新到最新版本 因为我一直面临连接到它的库的问题 最新面临的问题如下 Cause 1 java util concurrent ExecutionException java lang Runtime
  • nginx conf /具有多个映射)到同一变量

    我们有一个多站点设置 需要将域和域 子文件夹映射到变量 这样编程就知道要加载哪个版本 我们的商店具有单独的域 并且可以通过以下方式捕获 http host还有domain com string locale here 并被捕获 http h