NGINX子域代理通行证

版本:nginx / 1.2.0 || (我知道风险,它的内部服务器)我如何设置一个系统, 17.hostname.com将作为proxy_pass http://192.168.56.17:80 (其中17将被replace为以前的数字主机名)

编辑: 正则expression式server_name和地图指令的解决scheme比这个,它使用邪恶的if指令 。

$ hostvariables包含客户端请求的主机名,尽pipe您需要稍微处理一下以获得所需的部分。 它看起来是实现这一目标的唯一方法是使用来自Rewrite模块的if和set指令,所以请尝试如下所示:

 server_name *.hostname.com; if ($host ~* ^([0-9]+)\.hostname\.com$) { set $proxyhost 192.168.56.$1; } proxy_pass http://$proxyhost; 
 server_name ~^(?<subnum>[0-9]+)\.hostname\.com$; proxy_pass http://192.168.56.$subnum; 

http://nginx.org/en/docs/http/server_names.html

 map $host $backend { default 1; ~*^(?P<number>[0-9]+)\.hostname\.com$ $number; # FIXME: [0-9]+ must be replaced to regex with accurate check 1..254 range # for example [1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4] or similar } server { server_name *.hostname.com; location / { proxy_pass http://192.168.56.$backend:80; } } 

请记住: 如果是邪恶 ! 😉