Как получить доступ к моему серверу node.js через общедоступный IP-адрес?

Я хочу получить ответ от удаленного сервера node.js, введя свой общедоступный IP-адрес в свой браузер. Когда я ввожу свой общедоступный IP-адрес в браузер на своем персональном компьютере, я получаю сообщение «Невозможно подключиться». Мой сервер node.js не подключен к миру =(

  • Я использую CentOS на Linode (но я не думаю, что какой-либо выбор должен иметь значение для моего вопроса).
  • Через терминал на моем личном компьютере (Mac) я могу успешно подключиться к своему Linode по SSH от имени пользователя root.
  • Я успешно установил node.js на свой Linode.
  • Я могу скомпилировать и запустить простой сервер на моем Linode.
var http = require('http');//create a server object:
http.createServer(function (req, res) {
  res.write('Hello World!'); //write a response
  res.end(); //end the response
}).listen(3000, function(){
 console.log("server start at port 3000");
});

Я пробовал:

  • Установка имени хоста.
  • Изменение файла hosts на моем сервере.
  • Изменение номера порта на моем сервере node.js (3000, 80, 8080, 3001, 0.0.0.0 и т. д.).
  • Прочитайте сегодня буквально 100 статей о том, как развернуть сервер node.js.
  • Искал в Google, Stackoverflow, форумах Linode и т. Д. Темы, которые могут мне помочь.

Я понятия не имею, что я делаю неправильно, и был бы так благодарен за вашу помощь.


person user3788756    schedule 21.04.2020    source источник
comment
Вы пробросили порт?   -  person Saddy    schedule 21.04.2020
comment
Это то, что мне нужно сделать?   -  person user3788756    schedule 22.04.2020
comment
Если вы используете это у себя дома или в локальной сети, вам нужно будет перенаправить порт. Это может отличаться в зависимости от вашего интернет-провайдера/модема, поэтому я рекомендую искать {your isp} how to port forward   -  person Saddy    schedule 22.04.2020
comment
Сервер node.js работает на удаленном Линоде, а не в моем доме или в локальной сети.   -  person user3788756    schedule 22.04.2020
comment
Странно - вы пытались связаться с провайдером сервера?   -  person Saddy    schedule 22.04.2020
comment
Вы используете CentOS где-то в облаке или у вас дома?   -  person Aviv Lo    schedule 22.04.2020
comment
CentOS работает в облаке.   -  person user3788756    schedule 22.04.2020


Ответы (1)


В конце концов я нашел ответ благодаря предположению Сэдди, что проблема может заключаться в переадресации портов.

1. I decided to use ports 3080 and 3443 for my node server.
2. I SSHed into my CentOs instance.
3. I disabled the default firewall, firewalld.
4. I set up port forwarding using iptables with the following commands:

брандмауэр остановить

брандмауэр отключить

iptables -I ВВОД 1 -p tcp --dport 80 -j ПРИНЯТЬ

iptables -I ВВОД 1 -p TCP --dport 443 -j ПРИНЯТЬ

iptables -I ВВОД 1 -p tcp --dport 25 -j ПРИНЯТЬ

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3080

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3443

iptables-save › /etc/sysconfig/iptables

После этого я смог получить доступ к моему серверу узлов через браузер.

person user3788756    schedule 16.07.2020