POST 参数没有从我的反向代理传递到我的后端服务器
POST params are not passes from my reverse proxy to my backend server
我有一个提供静态 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" [{\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);
在我的 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_passhttp://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
但结果是一样的。
有什么想法吗?
我犯了一个错误,在我的后端服务器中禁用了 bodyParser
现在可以了
我有一个提供静态 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" [{\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);
在我的 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_passhttp://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
但结果是一样的。 有什么想法吗?
我犯了一个错误,在我的后端服务器中禁用了 bodyParser 现在可以了