当前位置: 首页 > 知识库问答 >
问题:

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

南宫阳冰
2023-03-14

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

我已经在Nginx“POST/users/signup http/2.0”500 118 1“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“[{\x22username\x22:\x22testet\x22}]中记录了我的POST请求

我的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);

在我的routes/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个答案

沃阳曜
2023-03-14

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

 类似资料:
  • 我有一个apache服务器在运行,在这个服务器上我也有一个mongo数据库在运行,监听标准端口27017。 我试过这个,但似乎一点也不起作用:

  • 我已经嵌入了在7000端口上运行的Jetty。另外,我有一个keycloak服务器运行在同一台机器的端口8100上。 我的所有客户端访问都通过Jetty进行,即localhost:7000。因此,我将keycloak作为Jetty上的反向代理,即localhost:7000/keycloak/auth将重定向到localhost:8100/auth。它击中正确。 现在,有KeycloakInsta

  • 我有一个包含3个容器的项目:反向代理容器(jwilder-nginx-proxy image),前端容器(nginx容器服务于Vue js开发和捆绑的应用程序)和后端容器(node6容器服务于NodeJs ExpressJs应用程序)。后端和前端都在反向代理的后面。下面是它在我的本地主机中应该如何工作: 访问http://localhost:80/并为gui服务 gui应该通过http://loc

  • 我有一个Nginx服务器托管一个web应用程序,当直接访问时工作正常。其配置如下 现在我必须从另一个Nginx服务器上服务这个应用程序,所以我设置了如下所示的反向代理 当我从server2访问应用程序时,我会得到如下错误,例如,当我访问HTTP:server2.com/app/css/app.css时 [error]6601#0:*1 open()“/data/www/app/css/app.cs

  • 我在服务器上安装了keycloak standanlone,并尝试通过Nginx在反向代理后面使用它。Keycloak绑定到127.0.0.1

  • 我正在为一个客户配置一个相当复杂的应用程序,并且被反向代理模型所困扰。就我的理解而言,我们应该将proxy_pass/uwsgi_pass发送到内部endpoint地址(172.30.0.0/16),比如 appname . project . SVC . cluster . local 但是,这些地址虽然可从构成应用的容器内进行 DNS 解析,但无法访问。容器似乎从 10.200.0.0/14