Реагируйте на приложение с nodejs бросками бэкэнда net :: ERR_CONNECTION_REFUSED в aws - PullRequest
0 голосов
/ 27 апреля 2020

Я столкнулся с проблемой здесь, в моем приложении реакции, которое выбрасывает ошибку «Отказано в соединении при работе с AWS EC2». Приложение содержит 2 папки: одну для серверной части и другую для внешнего интерфейса. Внешний интерфейс работает на порту 3000, а внутренний - на порту 5000. Я использую axios.get('http://localhost:5000/') для связи с внутренним сервером, который должен отправить ответ JSON, но вместо этого получает ошибку. До сих пор я выполнил эти шаги только для того, чтобы мой внешний интерфейс, запущенный

  1. , клонировал мое хранилище в / var / www/myrepo/ (в нем 2 папки спереди и сзади)
  2. cd to / backend и npm install
  3. cd to / frontend и npm install
  4. удалили файл по умолчанию из nginx / sites-available и создали новый файл по умолчанию со следующей конфигурацией (см. ниже) и связан с сайтами с поддержкой (также здесь удален файл по умолчанию)
  5. Я использую pm2 для запуска переднего и внутреннего сервера (см. ниже конфигурацию, которую я использовал в app.config. json) для запуска переднего и внутреннего серверов)
  6. Кроме того, я выполнил команду npm run build для создания папки сборки (я немного запутался здесь о том, как настроить сервер для использования сборки / индексации). html). Пожалуйста, посмотрите backend / server. js ниже
  7. Теперь после перезапуска Nginx я запустил pm2 start app.config.json.
  8. Как только передний и внутренний серверы запущены и запущены, я вошел в свою публикацию c IP-адрес в браузере, и я вижу, что мой внешний интерфейс успешно загружается, но он не отображает никаких данных, которые я должен получить из бэкэнда (пожалуйста, скриншот chk). console log error from browser

и мой файл конфигурации в /etc/Nginx/sites-available/default содержит следующую конфигурацию

server {
    listen 80;
    location / {
        proxy_pass http://myprivateip: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;
        proxy_redirect off;
     }
}

my app.config.json

module.exports = {
  apps : [{
    name        : "backend",
    script      : "./backend/server.js",
    watch       : true,
    env: {
      "NODE_ENV": "development",
    },
    env_production : {
     "NODE_ENV": "production"
    }
  },
  {
    name       : "front",
    script     : "./frontend/node_modules/react-scripts/scripts/start.js",
    watch       : true,
    env: {
      "NODE_ENV": "development",
    },
    env_production : {
      "NODE_ENV": "production"
    }
  }]
}

и backend/server.js

if(process.env.NODE_ENV === 'production'){
    app.use(express.static(path.join(__dirname, 'frontend/build')))
    app.get('*', (req,res) => {
        res.sendFile(path.resolve(__dirname, 'frontend','build','index.html'))
    })
}

Я не уверен, что я здесь не так делаю. Что-то не так с конфигурацией или я не выполняю правильные шаги? Это мое первое знакомство с AWS, поэтому любая помощь будет принята с благодарностью. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...