2016-06-14 2 views
2

Я хотел бы использовать Nginx в качестве HTTP-прокси-сервера.Nginx маршрутизация в несколько конечных точек RESTful

На бэкэнде у нас есть 3 разных приложения, написанных на Java, которые предоставляют API RESTful каждый. Каждое приложение имеет свой собственный префикс в API.

Например:

APP 1 - URI prefix: /api/admin/** 
APP 2 - URI prefix: /api/customer/** 
APP 3 - URI prefix: /api/support/** 

На веб-интерфейсе, у нас есть SPA страница отправки запросов в тех адресов URI.

Есть ли способ сообщить Nginx о маршрутизации HTTP-запроса в зависимости от префикса URI?

Заранее благодарен!

ответ

3

Я уверен, что вы можете использовать перенаправление прокси-сервера nginx для перенаправления в соответствии с каждым из ваших нескольких префиксов uri. Я использовал прокси-переадресацию с nginx. Ваш пример я адаптировано из страницы, которая дает конкретную информацию о Uri префиксов (я сохранил запись/Foo из этой страницы здесь для сравнения):

https://serverfault.com/questions/379675/nginx-reverse-proxy-url-rewrite

Смотрите также (учитывая разницу proxy_pass от proxy_redirect), http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass

С вашим кодом, место будет что-то вроде:

server { 
listen   80; 
server_name  www.example.com; 

location /api/admin { 
    proxy_pass http://localhost:3200/; 
} 

location /api/customer { 
    proxy_pass http://localhost:3200/; 
} 

location /api/support { 
    proxy_pass http://localhost:3200/; 
} 

location /foo { 
    proxy_pass http://localhost:3200/; 
} 

}

В качестве ссылки, которую я привел в качестве упоминания, обратите внимание на косую черту в конце каждой директивы местоположения, которая позволяет выполнить дикий кардинг после префикса. И, конечно, URL-адреса, к которым перенаправляется каждый из путей, не обязательно должны быть одинаковыми - localhost: 3200 - как в этом примере.

+0

Удивительный! Благодаря! Это то, что я искал :) – dfanaro