@whireless

Сервер отдаёт ошибку 500, в чём дело?

Всем привет, ребят, не пойму почему сервер возвращает ошибку 500 (Internal Server Error).

Вот код запроса:
const sendData = (mail) => {
  return fetch(
    'https://example.com:443/server',
    {
      method: 'POST',
      body: mail,
    }
  )
  .then((response) => response.text());
};


Вот nginx.conf:
server {
    listen 80;
    server_name example.com;
    return 301 https://$server_name$request_uri;
	}

	server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/cert.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    location / {
      root /var/www/example.com/;
      index index.html;
    }

    location /server/ {
      resolver 00.000.000.00;
      proxy_pass https://00.000.000.00;
			limit_except GET POST {
      	deny all;
    	}
    }
	}


Вот server.js по адресу /var/www/example.com/server:
const https = require('node:https');
const express = require('express');
const app = express();
const fs = require('node:fs');

const options = {
  key: fs.readFileSync('/etc/letsencrypt/live/example.com/privkey.pem'),
  cert: fs.readFileSync('/etc/letsencrypt/live/example.com/cert.pem'),
};

https.createServer(
  options, 
  app.post('/var/www/example.com/server/', (req, res) => {
    let mail = '';
    req.on('data', chunk => {
      mail += chunk
      console.log(mail);
    });
    req.on('end', () => {
      sendRuProgram(mail);
    });
    res.status(200).type('text/plain')
    res.send('Отправили программу!');
  })
).listen(port, host, () => {
  console.log(`Привет от сервера! https://${host}:${port}`);
});


Логика такая -

1. На сервер приходят данные через POST.
2. Он создаёт переменную.
3. В неё записывает эти данные.
4. Вызывает функцию параметром которой и будет эта переменная.
  • Вопрос задан
  • 267 просмотров
Решения вопроса 1
wapster92
@wapster92 Куратор тега JavaScript
Судя по конфигу, до твоего js сервера вообще ничего не доходит)
'https://example.com:443/server' - зачем порт в запросе пишешь, https и так по умолчанию запросит 443 порт. Еще чтобы обращаться к локальному серверу таким образом 'https://example.com' нужно в hosts прописать ip адрес данного домена. Ну в любом случае у тебя конфиг не верный. И еще ты увеличиваешь нагрузку делая https в express и в nginx.
Примерный конфиг nginx
server {
    listen 80;
    server_name example.com;
    return 301 https://$server_name$request_uri;
  }

  server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/cert.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    location / {
      root /var/www/example.com/;
      index index.html;
    }

    location /server/ {
      proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
  }


Еще и тут ошибка
app.post('/var/www/example.com/server/' советую почитать доку, посмотреть примеры.
Короче у тебя там одна каша и недоделки
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы