2016-09-09 2 views
1

이것을 달성하기 위해 여러 가지 시도를했습니다. 각 포트/클라이언트에 새로운 서버 블럭을 작성합니다.

각 인스턴스가 자체 포트에서 실행되기 때문에 사용자가 n 시간 동안 대여 할 수있는 응용 프로그램을 시작하는 중입니다. 응용 프로그램의 자체 인스턴스로 전달하는 URL을 사용자에게 제공하고 싶습니다. 예를 들어 포트 번호를 기반으로합니다.

내가 지금 무엇을 가지고

, 단지 VAR (예 5006 용) 전달되는 것을, 내가 달성하고자하는 어떤

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; 
} 

을 테스트하기 위해이 proxy_pass 포트에 전달됩니다. 또한, 각 인스턴스에 대해/status/상태를 볼 싶습니다 (및 사용해야합니다 끝 /? .. 내가 그들을 시도했지만 때로는 끝나는 포함하여 경로를로드//, 때로는 심지어 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

굉장! 거의 완벽하게 작동합니다. 나는 이것을 오랫동안보고 있었다. 고맙습니다! 만 건 내가 당신의 대답을 다시 한 번 감사드립니다 슬래시를 종료하지 않고//하지만 이동/통해 5001 이동/통해 응용 프로그램/5001 /이동/5001/상태와 같은 하위 디렉토리에만 액세스 할 수있는 반면에 액세스 할 수 있습니다! 이미 저에게 많은 번거 로움을 덜어줍니다. – ultrafunkamsterdam