POST参数没有从我的反向代理传递到我的后端服务器

时间:2019-05-14 12:46:37

标签: node.js nginx post nginx-reverse-proxy

我有一个提供静态Web内容的Nginx服务器和一个与我的后端API交换的反向代理。 我使用certbot配置了我的SSL证书。 我的问题是POST参数没有从我的反向代理传递到后端服务器。 我的GET参数已正确检索。

我已经在Nginx中记录了我的POST请求 “ POST /用户/注册HTTP / 2.0” 500 1181“ https://MYDNS/signup”“ Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 74.0.3729.131 Safari / 537.36” [{\ x22username \ x22:\ x22testet \ x22}]

我的nginx配置文件

    server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
        server_name MYDNS;
    root /var/www/MYDNS;

    ssl_certificate /etc/letsencrypt/live/MYDNS/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/MYDNS/privkey.pem;

    error_log /var/log/nginx/MYDNS.error.log warn;
    access_log  /var/log/nginx/MYDNS.postdata-access.log post_logs; 

     location /Users {
            proxy_pass http://127.0.0.1:3001;
            proxy_http_version 1.1;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
    }

    server {
    listen 80;
    listen [::]:80;

    server_name MYDNS;

    return 301 https://MYDNS$request_uri;
    }

在我的后端服务器中 在我的app.js文件中

     var Users =require('./routes/Users');
     app.use('/Users',Users);

在我的route / Users.js文件中

     router.post('/signin', function (req, res, next) {
     console.log(req.params.username); --> undefined
     console.log(req.body.username); --> undefined
     });

我也试图改变 proxy_pass http://127.0.0.1:3001到 proxy_pass http://localhost:3001

在服务器上,我已经测试过

    curl -i -H "Content-Type: application/json" -H "Accept: application/json" -X POST -d '{"username": "this_is_param_1"}' http://localhost:3001/Users/signin

,但结果相同。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我犯了一个错误,并在后端服务器中禁用了bodyParser 现在可以了