У меня есть сервер nginx, который предоставляет статический веб-контент, и обратный прокси-сервер, который обменивается с моим внутренним API.
Я настроил с помощью certbot мой сертификат SSL.
Моя проблема в том, что параметры POST не передаются с моего обратного прокси-сервера на мой бэкэнд-сервер.
Мои параметры GET восстановлены правильно.
Я зарегистрировал свой запрос POST в Nginx
"POST / Users / регистрация 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);
В моем файле маршрута / 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
но результат тот же.
Есть идеи, пожалуйста?