2015-10-12 5 views
4

У меня есть этот REST API URL:Nginx места переменного регулярного выражения захвата

http://localhost:4000/api/v2/stocks/accounts/1162/tradings 

Я хочу, чтобы это proxy_pass к URL:

http://localhost:4001/api/v2/stocks/accounts/1162/tradings 

Где 1162 является параметром URL, который может быть другим значением.

У меня есть следующий:

location ^~ /api/v2/stocks/accounts/([^/]+)/tradings { 
     proxy_pass http://localhost:4001/api/v2/stocks/accounts/$1/tradings; 
} 

Но он не работает (404 Not Found), я гугл подобной проблемы, но не много помощи:

Как это: Get arguments Nginx and path for proxy_pass или это один: trouble with location regex and redirection in nginx.

Есть ли способ достичь того, что я хочу, используя nginx?

Заранее благодарим за любую помощь.

ДОБАВЛЕНО:

Я также добавил параметры захвата:

location ~ /api/v2/stocks/accounts/([^/]+)/tradings/(.*) { 
    proxy_pass http://localhost:4001/api/v2/stocks/accounts/$1/tradings/$2$is_args$args; 
} 

ответ

3

Вы можете сделать это так же, как это. НЕ '^~'

location ~ /api/v2/stocks/accounts/([^/]+)/tradings { 
    proxy_pass http://localhost:4001/api/v2/stocks/accounts/$1/tradings; 
} 

Как описано nginx.org.
^~ часто, чтобы соответствовать каталог, как это показано ниже:

location ^~ /dir/ { 
    # some actions 
} 
+0

Спасибо. Отлично работает! – Ryan

Смежные вопросы