Перенаправление порта nginx отправляет пустой объект json

У меня есть приложение для создания докеров с «шлюзом» nginx, который перенаправляет запрос с порта 3000 на порт 5000, но отправляет пустой объект.

Когда контейнер на порту 3000 делает запрос к «/api/example», контейнер nginx перенаправит запрос на контейнер на порту 5000, который сохранит объект в базе данных.

это файл конфигурации nginx:

upstream client {
  server client:3000;
}

upstream api {
  server api:5000;
}

server {
  listen 80;

  location / {
    proxy_pass http://client;
  }

  location /api {
    rewrite /api/(.*) /$1 break;
    proxy_pass http://api;
  }
}

и Dockerfile:

FROM nginx
COPY ./default.conf /etc/nginx/conf.d/default.conf

докер-составить:

version: '3'
services: 
  mongo:
    container_name: mongo
    restart: always
    image: mongo
    env_file: .env
    environment:
    environment:
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_USER}
      MONGO_INITDB_ROOT_USERNAME: ${MONGO_PASSWORD}
      MONGO_INITDB_DATABASE: ${MONGO_DATABASE}
    volumes:
      - ./mongoUser.js:/docker-entrypoint-initdb.d/001_users.js:ro
      - ./mongodb:/data/db
    ports:
      - '27017:27017'
  api:
    env_file: .env
    build:
      dockerfile: Dockerfile
      context: ./api
    links:
      - mongo
    depends_on:
      - mongo
    volumes:
      - /node_modules
      - ./api:/app
    environment:
      - MONGO_USER=${MONGO_USER}
      - MONGO_PASSWORD=${MONGO_PASSWORD}
      - MONGO_DATABASE=${MONGO_DATABASE}
  client:
    build:
      dockerfile: Dockerfile
      context: ./client
    volumes:
    - /app/node_modules
    - ./client:/app
  nginx:
    restart: always
    depends_on:
      - mongo
      - api
      - client
    build:
      dockerfile: Dockerfile
      context: ./nginx
    ports:
      - '80:80'

Я попытался вставить данные в почтальона API, и это удалось. Однако при создании простого поста axios от клиента сервер получает пустой объект.

внешний интерфейс:

axios.post('/api/example/', { item: 'something' });

экспресс - журналы мангуста:

api_1     | posting:  {} // This is the body of the request.
api_1     | { ValidationError: item validation failed: item: Path `item` is required.
api_1     |     at ValidationError.inspect (/node_modules/mongoose/lib/error/validation.js:59:24)
api_1     |     at formatValue (internal/util/inspect.js:521:31)
api_1     |     at inspect (internal/util/inspect.js:196:10)
api_1     |     at Object.formatWithOptions (util.js:84:12)
api_1     |     at Console.(anonymous function) (internal/console/constructor.js:274:15)
api_1     |     at Console.log (internal/console/constructor.js:283:59)
api_1     |     at newItem.save.then.catch.err (/controllers/example.js:21:27)
api_1     |     at processTicksAndRejections (internal/process/next_tick.js:81:5)
api_1     |   errors:
api_1     |    { item:
api_1     |       { ValidatorError: Path `item` is required.
api_1     |           at new ValidatorError (/node_modules/mongoose/lib/error/validator.js:29:11)
api_1     |           at validate (/node_modules/mongoose/lib/schematype.js:926:13)
api_1     |           at /node_modules/mongoose/lib/schematype.js:979:11
api_1     |           at Array.forEach (<anonymous>)
api_1     |           at SchemaString.SchemaType.doValidate (/node_modules/mongoose/lib/schematype.js:935:19)
api_1     |           at /node_modules/mongoose/lib/document.js:1936:9
api_1     |           at processTicksAndRejections (internal/process/next_tick.js:74:9)
api_1     |         message: 'Path `item` is required.',
api_1     |         name: 'ValidatorError',
api_1     |         properties: [Object],
api_1     |         kind: 'required',
api_1     |         path: 'item',
api_1     |         value: undefined,
api_1     |         reason: undefined,
api_1     |         [Symbol(mongoose:validatorError)]: true } },
api_1     |   _message: 'item validation failed',
api_1     |   name: 'ValidationError' }
nginx_1   | 172.18.0.1 - - [18/Feb/2019:01:07:28 +0000] "POST /api/example/ HTTP/1.1" 504 569 "http://localhost/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36" "-"
nginx_1   | 2019/02/18 01:07:28 [error] 7#7: *4 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 172.18.0.1, server: , request: "POST /api/example/ HTTP/1.1", upstream: "http://172.18.0.4:5000/example/", host: "localhost", referrer: "http://localhost/"

Вы можете поделиться своим docker-compose?

Jose Angel Sanchez 18.02.2019 02:33

Забыл поделиться, спасибо.

Aaron Reynoza 18.02.2019 02:42
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
210
1

Ответы 1

Итак, я устанавливал Express с bodyParser на «application/x-www-form-urlencoded» вместо «application/json». Ошибка новичка.

Другие вопросы по теме