最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

nginx端口重定向发送空的json对象

运维笔记admin6浏览0评论

nginx端口重定向发送空的json对象

nginx端口重定向发送空的json对象

我有一个带有nginx'网关'的docker-compose应用程序,它将请求从端口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/"
回答如下:

所以,我在'application / x-www-form-urlencoded'而不是'application / json'上使用bodyParser设置Express。新手的错误。

发布评论

评论列表(0)

  1. 暂无评论