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

Posted

技术标签:

【中文标题】POST 参数不是从我的反向代理传递到我的后端服务器【英文标题】:POST params are not passes from my reverse proxy to my backend server 【发布时间】:2019-10-01 12:09:33 【问题描述】:

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

我已经在 Nginx 中记录了我的 POST 请求 "POST /Users/signup HTTP/2.0" 500 1181 "https://MYDNS/signup" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/74.0.3729.131 Safari/537.36" [ \x22用户名\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);

在我的路由/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】:

我犯了一个错误并在我的后端服务器中禁用了 bodyParser 现在好了

【讨论】:

以上是关于POST 参数不是从我的反向代理传递到我的后端服务器的主要内容,如果未能解决你的问题,请参考以下文章

NGINX 反向代理响应

Spring post 不工作 - 我的 json 是从前端发送的,我可以在日志中看到它,但我的后端得到 Null

我无法将我的 v-model 数据传递到我的后端以获取 vue.js 中的单选按钮类型,如何将选中的单选按钮值传递给我的后端?

nginx:nginx反向代理在服务器上工作,但在本地主机上不工作

nginx 反向代理中proxy_set_header的含义

webpack配置proxy反向代理,解决跨域问题