server { listen 80; listen [::]:80; server_name {PROXY_DOMAIN}; location / { proxy_pass http://127.0.0.1:3000; } } server { listen 80; listen [::]:80; server_name "~^(port-(?.*)\.)?(?.*)\.{PROXY_DOMAIN}"; location / { if ($port = "") { set $port "80"; } set $ip ''; rewrite_by_lua_block { local http = require("resty.http").new() local res = http:request_uri("http://127.0.0.1:3000/containers/" .. ngx.var.container .. "/ip") ngx.var.ip = res.body } proxy_pass http://$ip:$port; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }