如何解决NGINX 添加两个变量/参数数字
我正在尝试设置一个 Nginx,我想将两个数字相加。
server {
server_name "~^pr-(\d*).review-apps.example.com$";
location / {
set $port 50000+$1;
proxy_pass "http://localhost:$port/test";
}
}
但这行不通?。 (结果在字符串中。例如“50000+125”)
如何在 nginx.conf 中添加两个数字?甚至有可能吗?
解决方法
如果您使用固定长度的数字,例如只有三个数字,对于这种特殊情况,您可以使用字符串连接而不是添加数字:
server {
server_name "~^pr-(\d{3}).review-apps.example.com$";
location / {
set $port 50$1;
proxy_pass "http://localhost:$port/test";
}
}
这将为 50145
主机名提供准确的 pr-125.review-apps.example.com
。
对于端口号数字的可变计数,您可以使用命名的正则表达式捕获组:
server {
server_name "~^pr-(?<pr1>\d).review-apps.example.com$"
"~^pr-(?<pr2>\d{2}).review-apps.example.com$"
"~^pr-(?<pr3>\d{3}).review-apps.example.com$";
location / {
if ($pr1) { set $port 5000$pr1; }
if ($pr2) { set $port 500$pr2; }
if ($pr3) { set $port 50$pr3; }
proxy_pass "http://localhost:$port/test";
}
}
,
不,不能在标准模块中使用数学。 lua
模块可能有机会,但您可能不应该这样做,因为 NGINX 不应该被这样使用。这就像用螺丝刀敲钉子——你有可能成功,但也有可能在这个过程中戳出一只眼睛。
我建议您重新考虑应用程序的设计,也许有更好/常用的方法来实现您想要的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。