我的上游:
upstream upstream_**uba1**_console_f485c00e45256742e2cc641db834b150 {
ip_hash;
server 192.30.56.172:39443;
check interval=2000 rise=1 fall=3 timeout=3000;
}
upstream upstream_**uba2**_console_f485c00e45256742e2cc641db834b150 {
ip_hash;
server 192.30.56.173:39443;
check interval=2000 rise=1 fall=3 timeout=3000;
}
我的位置:
location /opsuba/ {
if ($args ~* region=(\w+?)(&|$)) {
set $region $1;
}
limit_req zone=reqconsole burst=10000 nodelay;
limit_conn connconsole 1000;
**proxy_pass https://upstream_${region}_console_f485c00e45256742e2cc641db834b150;**
include error_page_exclude_ajax.conf;
include static_file.conf;
access_log off;
}
我怎样才能upstream_${region}_console_f485c00e45256742e2cc641db834b150
用变量替换?
答案1
$1
您可以像(来自正则表达式)或$region
从命令中指定变量set
。
这应该在您的配置中起作用:
proxy_pass http://upstream_$region_console_f485c00e45256742e2cc641db834b150;
我刚刚用这个示例配置对其进行了测试:
upstream upstream_uba1_console_f485c00e45256742e2cc641db834b150 { ip_hash; server 127.0.0.1:39443; }
upstream upstream_uba2_console_f485c00e45256742e2cc641db834b150 { ip_hash; server 127.0.0.1:39444; }
server {
listen 80;
location ~ ^/([^\/]*) {
proxy_pass http://upstream_$1_console_f485c00e45256742e2cc641db834b150;
}
}
server {
listen 39443;
root /var/www/;
location / {
try_files /url1.html $uri;
}
}
server {
listen 39444;
root /var/www/;
location / {
try_files /url2.html $uri;
}
}
文件系统上的文件:
/var/www/url1.html -> content url 1
/var/www/url2.html -> content url 2
通过以下方式访问:
http://localhost/uba1/ -> url1.html
http://localhost/uba2/ -> url2.html
我使用本地后端完成了所有操作,但也可以用于您的后端。
此外,我必须从您的upstream
块中删除一些参数才能使其正常工作。