如何在 nginx 变量中转义 $

Cha*_*itt 3 nginx ibm-bpm

我正在尝试将 BPM 特定的 $WSSR 标头映射到 nginx 配置中的 Host 标头,但我继续收到“nginx:[emerg] 未知的“wssn”变量“错误。如何在 nginx 配置中访问此标头值?有没有办法转义 $ 字符?

这是我当前尝试将自定义标头和主机映射到单个值的配置

map $http_\$wssn $x_host {
    default $host;
    "~." $http_\$wssn;
}
Run Code Online (Sandbox Code Playgroud)

使用此地图重新加载我的配置会导致此错误

# nginx -s reload
2019/08/12 18:37:42 [emerg] 25091#25091: unknown "wssn" variable
nginx: [emerg] unknown "wssn" variable
Run Code Online (Sandbox Code Playgroud)

Dan*_*nin 5

根据agentzh-nginx-tutorials,解决方案有点棘手。由于无法在 NGINX 变量中转义美元符号,因此您必须将其设为变量。

完全未经测试,但也许:

geo $dollar {
    default "$";
}

geo $foo {
    default "http_${dollar}wssn";
}

map ${dollar}${foo} $x_host {
    default $host;
    "~." ${dollar}${foo};
}
Run Code Online (Sandbox Code Playgroud)