nginx 反向代理取决于请求的端口
nginx reverse proxy depends on requested port
我想监听一个范围的端口,并绑定增量值(10000)的反向代理。
例如,我想监听并将其绑定到以下值:
example.com:20000 -> http://0.0.0.0:30000
example.com:20010 -> http://0.0.0.0:30010
example.com:20200 -> http://0.0.0.0:30200
我的 nxing 配置文件:
server {
listen 20000-20200;
server_name example.com;
location / {
proxy_pass http://0.0.0.0:$server_port; ## << I want increment this port with 10000
}
}
我该怎么做?
哇,我不知道 nginx 允许监听端口范围。我在documentation中没有找到,但是我自己查看的时候确实是按预期工作的。
好了,回到问题。没有额外的模块 nginx 没有任何内置的数学。但是,由于您只需要替换一位数字,您可以通过正则表达式捕获组和字符串连接来完成:
map $server_port $port {
"~\d(\d{4})" 3;
}
server {
listen 20000-20200;
server_name example.com;
location / {
proxy_pass http://0.0.0.0:$port;
}
}
如果您使用 OpenResty (or build nginx yourself with lua-nginx-module
),您可以在 nginx 配置中使用 LUA 代码的真实数学:
server {
listen 20000-20200;
server_name example.com;
location / {
set_by_lua_block $port { return ngx.var.server_port + 10000 }
proxy_pass http://0.0.0.0:$port;
}
}
我想监听一个范围的端口,并绑定增量值(10000)的反向代理。
例如,我想监听并将其绑定到以下值:
example.com:20000 -> http://0.0.0.0:30000
example.com:20010 -> http://0.0.0.0:30010
example.com:20200 -> http://0.0.0.0:30200
我的 nxing 配置文件:
server {
listen 20000-20200;
server_name example.com;
location / {
proxy_pass http://0.0.0.0:$server_port; ## << I want increment this port with 10000
}
}
我该怎么做?
哇,我不知道 nginx 允许监听端口范围。我在documentation中没有找到,但是我自己查看的时候确实是按预期工作的。
好了,回到问题。没有额外的模块 nginx 没有任何内置的数学。但是,由于您只需要替换一位数字,您可以通过正则表达式捕获组和字符串连接来完成:
map $server_port $port {
"~\d(\d{4})" 3;
}
server {
listen 20000-20200;
server_name example.com;
location / {
proxy_pass http://0.0.0.0:$port;
}
}
如果您使用 OpenResty (or build nginx yourself with lua-nginx-module
),您可以在 nginx 配置中使用 LUA 代码的真实数学:
server {
listen 20000-20200;
server_name example.com;
location / {
set_by_lua_block $port { return ngx.var.server_port + 10000 }
proxy_pass http://0.0.0.0:$port;
}
}