2015-09-29 5 views
1

Пересылать запросы с использованием proxy_pass. Если URL Введен www.yyy.com/9.157/7.134/live/playlist.m3u8прокси-пропуск и переписывание URL-адресов в ngnix

Я хочу proxy_pass его 10.5.ab: 1935/живой/playlist.m3u8,

где первые два октеты (10.5) остаются неизменными, все, что мне нужно сделать, это извлечь 9.157 и 7.134 из URL и прокси передать его в 10.5.ab: 1935 или (если 10.5.9.157:1935 вниз proxy_pass до 10.5.7.134:1935)

это как мой Nginx конфигурации выглядит

местоположение/{

 rewrite (\/)(([0-9][0-9][0-9]|[0-9][0-9]|[0-9])\.([0-9][0-9][0-9]|[0-9][0-9]|[0-9]))(\/) http://10.5.$2:1935/live/suhas_712_media_240p/playlist.m3u8 redirect; 

} 

выше код работает, но тогда я не хочу, чтобы перенаправить, я хочу сделать что-то вроде следующего

proxy_pass 10.5.a.b: 1935

как передать извлеченные значения а, Ь?

Благодаря

ответ

0

Это должно работать:

(я использовал regex names для ясности)

location ~* "/(?<a>[0-9]{1,3}\.[0-9]{1,3})/(?<b>[0-9]{1,3}\.[0-9]{1,3})/(?<suffix>.+)$" { 
     set $port 1935; 
     set $prefix "http://10.5"; 
     set $target_url_a "$prefix.$a:$port/$suffix"; 
     set $target_url_b "$prefix.$b:$port/$suffix"; 
     add_header X-debug-message_a "$target_url_a"; #just testing 
     add_header X-debug-message_b "$target_url_b"; #just testing    
     #proxy_pass $target_url_a; #enable this one for real 
     return 200; #just testing   
    } 

Curl -vv http://localhost/9.157/7.134/live/playlist.m3u8

> GET /9.157/7.134/live/playlist.m3u8 HTTP/1.1 
... 
> User-Agent: curl/7.43.0 
> Accept: */* 
> 

< HTTP/1.1 200 OK 
... 
< Content-Length: 0 
< Connection: keep-alive 
< X-debug-message_a: http://10.5.9.157:1935/live/playlist.m3u8 
< X-debug-message_b: http://10.5.7.134:1935/live/playlist.m3u8 
+0

Благодаря @danielgpm она работала :) –