Как развернуть сервер frontend и node.js на одном VPS и домене? - PullRequest
0 голосов
/ 06 мая 2018

Моя задача - создать целевую страницу, которая отправляет электронные письма с реквизитами для оплаты при отправке формы. Итак, у меня есть простой статический интерфейс (index.html, css /, js /, img /) и экспресс-сервер, который отправляет электронные письма (server.js); На моем локальном хосте я запускаю внешний интерфейс на localhost:3000 и server.js на localhsot:3000. После добавления заголовков CORS все начало работать нормально, электронные письма были успешно отправлены.

Для производства я купил VPS с Ubuntu, чтобы развернуть все это. Я настроил nginx, поэтому мой интерфейс доступен на myDomainName.com. Но когда я запускаю server.js, он не получает запросы, как на dev-сервере. В то же время, если я подключаюсь через ssh и набираю curl myDomainName.com:3000/, я получаю ответ «Привет»;

// server.js
// some code...
app.get('/' function (req, res) { res.status(200).end('Hi'); }
app.listen(3000, function () { console.log('Server listening on port 3000!'); })


// frontendFormHandler.js
// some code...
$.get('myDomainName.com:3000/', function(data){ console.log(data) })

Как мне настроить все это, чтобы оно работало на одном и том же VPS, в одном домене, но на разных портах? Как правильно развернуть такие небольшие проекты? Стоит ли выбирать другие инструменты?

1 Ответ

0 голосов
/ 06 мая 2018

В большинстве систем UNIX брандмауэр настроен на пропуск трафика только от других клиентов через порты 80 и 443 для HTTP и HTTPS, все остальные порты заблокированы по соображениям безопасности.

Чтобы разрешить порты (с ufw), используйте

$ (sudo) ufw allow 3000/tcp
$ (sudo) ufw allow 3000/udp

Или, для IPTables:

$ (sudo) iptables -I INPUT -p tcp --dport 3000 -j ACCEPT
$ (sudo) iptables -I INPUT -p udp --dport 3000 -j ACCEPT

для разрешения соединений по TCP или UDP

...