Не удается подключиться к node.js API, EC2 AWS [РЕШЕНО]

#node.js #amazon-web-services #api #http #amazon-ec2

Вопрос:

Я пытаюсь развернуть свой API NodeJS в Ubuntu Amazon Web Services. В app.js выполняется в порту 3002

PM2, Брандмауэр Ubuntu

Как вы можете видеть, мой app.js работает на порту 3002, и брандмауэр разрешает соединение с этим портом

Следующий тест-отправить запрос в мой API с помощью curl

 curl -d '{"email":"adriel@admin.com","password":"Zxycok159!"}' -H 'Content-Type: application/json' http://localhost:3002/user/login 
 

Я получил ожидаемый ответ с помощью curl.

RES:

 token: f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b
 

Чтобы завершить процесс, я проверю свои группы безопасности, разрешу порт 3002 и свой личный ip-адрес на консоли AWS

общедоступный IPv4
18.221.231.202

частный IPv4
172.31.17.178

Группы безопасности AWS

Вроде бы все в порядке, но когда я пытаюсь войти в обычный браузер http://172.31.17.178:3002

Я получил ответ на тайм-аут, не могу правильно подключиться и получить ответ API

RES:

 Unable to access this site 172.31.17.178 took too long to respond.
Try:

Check the connection
Check proxy and firewall
Run Windows Network Diagnostics
ERR_CONNECTION_TIMED_OUT
 

Я попробовал наиболее распространенные решения (группы безопасности AWS EC2, брандмауэр Ubuntu, тесты Curl) для решения этой проблемы, но не могу подключиться к API в браузере, какие-либо предложения?

Я не знаю, как я могу получить правильный ответ, например, когда я выполняю тот же процесс на своем локальном компьютере, в своем локальном браузере получаю ожидаемый ответ

HTTP-тест API на моем компьютере

Комментарии:

1. Используйте общедоступный ip-адрес вместо частного ip-адреса.

2. Общедоступный dns уже настроен для интерфейса . Должен ли я использовать узел в качестве обратного прокси-сервера??

3. I try to enter in a regular browser http://172.31.17.178:3002 <- ты не наезд публичный IP

Ответ №1:

Вы пытаетесь использовать частный IP-адрес экземпляра. Используйте общедоступный Ip-адрес экземпляра. Частный IP-адрес доступен только в вашем VPC AWS (это зависит от обстоятельств). Общедоступный IP-адрес-это то, что клиенты используют для доступа к вашему приложению.

Ответ №2:

Сразу же, чтобы настроить nginx для обоих (переднего плана и серверной части)

 server {
  listen 80 default_server;
  server_name _;

  # react app amp; front-end files
  location / {
    root /opt/front-end/dist;
    try_files $uri /index.html;
  }

  # node api reverse proxy
  location /api/ {
    proxy_pass http://localhost:3002/;
  }
}
 

Это правильно, чтобы настроить веб-сайт на 80