Я успешно установил узел js на Ec2, и мой веб-сайт и домен работают нормально, но когда я пытаюсь запустить узел js, он не запускается.

Я выполнил некоторые инструкции, и я сделал следующий шаг на своих aws.

 1. I have added a port 9000 on my security group
 2. I have done the pre-routing on iptables using below command

    sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 9000

Но после запуска кода, приведенного выше, мой домен перестает работать, это означает, что когда я пытаюсь открыть свой сайт mydomain.com, он ничего не показывает, и если я удалю это правило, он снова будет работать.

Я также попробовал следующее решение для запуска узла в качестве корневого уровня для прослушивания порта на 80.

sudo node server.js

Но после этого я получаю ошибку ниже

Error: listen EADDRINUSE :::80
    at Object.exports._errnoException (util.js:949:11)
    at exports._exceptionWithHostPort (util.js:972:20)
    at Server._listen2 (net.js:1253:14)
    at listen (net.js:1289:10)
    at Server.listen (net.js:1385:5)
    at Object.<anonymous> (/home/mcook/domains/development.mcook.co.in/public_html/server.js:36:5)
    at Module._compile (module.js:541:32)
    at Object.Module._extensions..js (module.js:550:10)
    at Module.load (module.js:456:32)
    at tryModuleLoad (module.js:415:12)

Я просто хочу, чтобы мой узел и мой сайт были запущены, и для этого мне нужно запустить команду и порт.

0
Raj Jagani 24 Июн 2016 в 15:47
Добавьте обратный прокси-сервер с соответствующими условиями, который передает запросы от 80 до 9000 для любого запроса, нацеленного на несуществующий файл / каталог. Это то, что вы сделали бы в apache и не потребовали бы открытия порта 9000 в вашей группе безопасности и брандмауэре.
 – 
Kevin B
24 Июн 2016 в 17:44
Почему голосование против этого вопроса .. ??
 – 
Raj Jagani
25 Июн 2016 в 13:38

1 ответ

Лучший ответ

Следующая команда перенаправит весь ваш трафик с PORT 80 на PORT 9000 .

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 9000

Зачем ты это делаешь? Поскольку вы уже открыли PORT 9000 из групп безопасности AWS, вы можете настроить node.js для подключения к PORT 9000 непосредственно из код.

Причина, по которой вы видите пустую страницу после выполнения вышеуказанного кода, заключается в том, что ваш веб-сервер работает на PORT 80 и каждый запрос, который перенаправляется на сервер node.js на порт 9000, на самом деле не имеет ничего, чтобы показать.

Поэтому не запускайте вышеуказанную команду, просто запустите сервер node.js на PORT 9000 и подключитесь к PORT 9000 только с клиента.

1
Alok Patel 24 Июн 2016 в 16:59
Да ты прав. мы можем использовать его на другом порту, если нам не нужно реверсировать прокси или предварительную маршрутизацию
 – 
Raj Jagani
25 Июн 2016 в 13:36