2016-09-09 67 views
1

我已经尝试了几件事情来完成这件事。即使为每个端口/客户端写一个新的服务器块。

我忙于启动一个应用程序,用户可以租用n小时,因为每个实例都在它自己的端口上启动,我想给用户一个将它们转发到它们自己的应用程序实例的url例如基于端口号。

我现在有什么,只是为了测试

location /go/ { 
    proxy_pass http://127.0.0.1:5000/; 
    proxy_redirect off; 
} 

location /go/5001/ { 
    proxy_pass http://127.0.0.1:5001/; 
    proxy_redirect off; 
} 


location ^~ /status/ { 
    proxy_pass http://127.0.0.1:5000/status; 
    proxy_redirect off; 
} 

我想什么来实现的,该变种被传递(例如5006)被传递到proxy_pass端口。另外,对于每个实例,我想要一个/ status /来查看状态(并且我应该使用end /?..我没有使用它,但有时它的加载路径包括结尾/,有时它甚至会替换url到127.0.0.1:port,有时不加载CSS /图像/ JS。

location /go/$VAR/ { 
    proxy_pass http://127.0.0.1:$VAR/; 
    proxy_redirect off; 
} 


location /go/$VAR/status/ { 
    proxy_pass http://127.0.0.1:$VAR/status; 
    proxy_redirect off; 
} 

很多感谢!

回答

0

如果您需要从URI捕获端口,并在proxy_pass使用声明,您可以使用具有指定捕获的正则表达式位置。

例如(我没有测试过这个):

location ~ ^/go/(?<myport>\d+)(?<myuri>/.*)$ { 
    rewrite^$myuri break; 
    proxy_pass http://127.0.0.1:$myport; 
    ... 
} 
+0

谢谢!明天早上我会试试这件事。有些东西告诉我这是正确的模式。会让你知道它是否工作。再次感谢! – ultrafunkamsterdam

+0

Awsome!工作几乎完美。我期待很长时间。谢谢! 唯一的事情是,我可以访问通过/进入/ 5001 /但不通过/去/应用5001 而像/去/ 5001 /状态子目录只能访问,无需你的答案再次 感谢结束斜线!它已经为我节省了很多额外的麻烦 – ultrafunkamsterdam