Как настроить расположение NGINX для нескольких служб - PullRequest
0 голосов
/ 06 июля 2018

Я хочу настроить NGINX для работы в качестве обратного прокси-сервера для других микросервисов.

Я могу переслать запрос от NGINX на один из микросервисов

если я это сделаю curl http://xx.xx.xx.xx:8080/ звонок совершил посадку на потребительский портал Но используется конфигурация местоположения по умолчанию /

когда я комментирую блок 1st и настраиваю тот же code для местоположения /consumer-portal и выполняю curl http://xx.xx.xx.xx:8080/consumer-portal

Я получаю:

Невозможно получить / потребительский портал

У меня есть более 10 микросервисов, которые я хочу вызвать с помощью NGINX.

Ниже мой nginx.conf файл

worker_processes 4;
events { 
        worker_connections 1024; 
    }

http {
    sendfile on;
    upstream consumer-portal {

         server xx.xx.xx.xx:9006;

    }
    upstream publisher-portal {

         server xx.xx.xx.xx:9001;
    }
    server {
        listen 8080;

        #1st Block
        #location / {
        #    proxy_pass         http://consumer-portal;
        #    proxy_redirect     off;
        #    proxy_set_header   Host $host;
        #    proxy_set_header   X-Real-IP $remote_addr;
        #    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        #    proxy_set_header   X-Forwarded-Host $server_name;
        #}

        #2nd Block
        location  /consumer-portal {
            proxy_pass         http://consumer-portal;
            proxy_redirect     off;
            proxy_set_header   Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Host $server_name;
        }

        #3rd Block
        location /publisher-portal/ {
             proxy_pass         http://publisher-portal;
             proxy_redirect     off;
             proxy_set_header   Host $host;
             proxy_set_header   X-Real-IP $remote_addr;
             proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_set_header   X-Forwarded-Host $server_name;
         }
}
}

Также, пожалуйста, дайте мне знать, если я могу переслать запрос, используя имя контейнера Docker.

например, вместо сервера xx.xx.xx.xx:9006 я хочу использовать server consumer-portal:9006

Подскажите, пожалуйста, какие изменения мне нужно внести в файл .conf .

1 Ответ

0 голосов
/ 07 июля 2018
    location  /consumer-portal {
        proxy_pass         http://consumer-portal;

Если ваш proxy_pass URL-адрес является просто доменом / IP / именем хоста и для него не задан URI, то Nginx передаст полный URL-адрес запроса клиента прокси-серверу для запросов, соответствующих блоку местоположения.Итак, здесь ваш запрос на

http://xx.xx.xx.xx:8080/consumer-portal будет перенаправлен Nginx на

http://consumer-portal/consumer-portal

Если ваш proxy_pass URL-адрес является доменом / IP / именем хоста, который такжедобавив URI, Nginx заменит соответствующую часть вашего блока местоположения из исходного клиентского запроса на URI в вашей директиве, а затем передаст полученный URL-адрес вышестоящему серверу.Так что, если у вас было proxy_pass http://consumer-portal/new/location;, то запрос к

http://xx.xx.xx.xx:8080/consumer-portal/account будет перенаправлен Nginx на

http://consumer-portal/new/location/account

Как вы хотите удалить /consumer-portal иззапрос к вышестоящему прокси-серверу решение так же просто, как добавление завершающей косой черты к вашей директиве proxy_pass, например:

proxy_pass http://consumer-portal/;

...