Я пытаюсь создать несколько сервисов и реверсировать их через прокси с помощью nginx.
Итак, service1:
http://api/service1 (nginx) => docker (http://service1: 4001 / ) => express (http://localhost: 4000 )
service2 это:
http://api/service2 (nginx) => docker (http://service2: 4002 / ) => express ( http://localhost: 4000 )
Я впервые экспериментирую с nginx с нуля, и я застрял, я не могу связаться ни с одним из моих сервисов с http://localhost: 80 / service1 или http://api/service1. И как вы думаете, это хорошее начало архитектуры для микро-сервисов для разработчиков и производства?
У меня также есть сомнения относительно моей внутренней сети для моего docker compose, точно ли она установлена или разрешена сеть по умолчанию docker?
(Все контейнеры работают нормально );
docker -compose.yml:
version: '3'
services:
mongo:
container_name: mongo
image: mongo:latest
ports:
- '27017:27017'
volumes:
- './mongo/db:/data/db'
nginx:
build: ./nginx
container_name: nginx
links:
- service1
- service2
ports:
- '80:80'
- '443:443'
depends_on:
- mongo
networks:
- api
service1:
build: ./services/service1
container_name: service1
links:
- 'mongo:mongo'
volumes:
- './services/service1:/src/'
ports:
- '4001:4000'
command: yarn dev
networks:
- api
service2:
build: ./services/service2
container_name: service2
links:
- 'mongo:mongo'
volumes:
- './services/service2:/src/'
ports:
- '4002:4000'
command: yarn dev
networks:
- api
networks:
api:
nginx .conf:
worker_processes 1 ;
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name api;
charset utf-8;
location /service1 {
proxy_pass http://service1:4001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /service2 {
proxy_pass http://service2:4002;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
}
служба DockerFile:
FROM node:latest
RUN mkdir /src
WORKDIR /src
COPY package.json /src/package.json
RUN npm install
COPY . /src/
EXPOSE 4000
nginx DockerFile:
FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
Я пытаюсь дозвониться до http://localhost: 80 / service1 / , который обычно приводит меня к http://service1: 4001
но я получаю эту ошибку:
[ошибка] 7 # 7: * 2 connect () не удалось (111: соединение отклонено) при подключении к восходящему каналу , клиент: 172.23.0.1, сервер:
172.23.0.1 - - [15 / Apr / 2020: 22: 01: 44 +0000] "GET / HTTP / 1.1" 502 157 "-" "PostmanRuntime / 7.24.1 "bts-api, запрос:" GET / HTTP / 1.1 ", восходящий поток:" http://172.23.0.2: 4001 /", хост:" localhost: 80 "
Я также пытаюсь достичь http://api/service1/ (определено в nginx .conf как имя_сервера), но у меня нет ответа или пин-кода г.