#node.js #amazon-web-services #api #http #amazon-ec2
Вопрос:
Я пытаюсь развернуть свой API NodeJS в Ubuntu Amazon Web Services. В app.js выполняется в порту 3002
Как вы можете видеть, мой 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
Вроде бы все в порядке, но когда я пытаюсь войти в обычный браузер 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 в браузере, какие-либо предложения?
Я не знаю, как я могу получить правильный ответ, например, когда я выполняю тот же процесс на своем локальном компьютере, в своем локальном браузере получаю ожидаемый ответ
Комментарии:
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