Я столкнулся с проблемой здесь, в моем приложении реакции, которое выбрасывает ошибку «Отказано в соединении при работе с AWS EC2». Приложение содержит 2 папки: одну для серверной части и другую для внешнего интерфейса. Внешний интерфейс работает на порту 3000, а внутренний - на порту 5000. Я использую axios.get('http://localhost:5000/')
для связи с внутренним сервером, который должен отправить ответ JSON, но вместо этого получает ошибку. До сих пор я выполнил эти шаги только для того, чтобы мой внешний интерфейс, запущенный
- , клонировал мое хранилище в / var / www/myrepo/ (в нем 2 папки спереди и сзади)
- cd to / backend и npm install
- cd to / frontend и npm install
- удалили файл по умолчанию из nginx / sites-available и создали новый файл по умолчанию со следующей конфигурацией (см. ниже) и связан с сайтами с поддержкой (также здесь удален файл по умолчанию)
- Я использую pm2 для запуска переднего и внутреннего сервера (см. ниже конфигурацию, которую я использовал в app.config. json) для запуска переднего и внутреннего серверов)
- Кроме того, я выполнил команду npm run build для создания папки сборки (я немного запутался здесь о том, как настроить сервер для использования сборки / индексации). html). Пожалуйста, посмотрите backend / server. js ниже
- Теперь после перезапуска Nginx я запустил
pm2 start app.config.json
. - Как только передний и внутренний серверы запущены и запущены, я вошел в свою публикацию c IP-адрес в браузере, и я вижу, что мой внешний интерфейс успешно загружается, но он не отображает никаких данных, которые я должен получить из бэкэнда (пожалуйста, скриншот chk).
и мой файл конфигурации в /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, поэтому любая помощь будет принята с благодарностью. Спасибо.