根据子域的不同环境变量

根据子域的不同环境变量

NGINX 是否可以根据子域选择不同的环境变量?如果可以,我该怎么做?

背景:环境变量链接到某个 Mongo DB 实例,我想根据子域使用多个 mongo DB(针对每个客户)。

答案1

根据官方文档,在 nginx 中操作环境变量的唯一方法是使用env指令,仅在main上下文中可用(即不依赖于诸如的协议http,因此不是其固有的server)。

这意味着,将为整个 nginx 环境设置变量(即使看起来你可以基于独立的进程来更改它)。

为了做你想做的事,我建议:

  • 为每个子域使用单独的 nginx 实例,从相同的文件中读取通用配置部分(因此您不必维护主干的单独副本),并根据其服务的特定子域设置每个 nginx 实例的环境
  • 遵循@XavierLucas的建议并使用一些模块,例如嵌入式perl或者第三方的 Lua

相关内容