Не удается получить доступ к веб-серверу node.js по URL-адресу общего хостинга godaddy - PullRequest
0 голосов
/ 17 января 2019

Когда я ввожу www.example.com:3000 в браузере, я получаю эту ошибку (где 'example' - это имя моего домена)

This site can't be reached - www.example.com took too long to respond.

Я сделал следующие вещи:

  1. Установил node.js в моей общей учетной записи GoDaddy
  2. Создал папку ../public_html/testsite
  3. Поместил в эту папку два файла: app.js и .htaccess.
  4. Запустите веб-сервер с: node app.js
  5. Перейдите в браузер и введите URL и порт моего домена:
  6. Получите сообщение об ошибке выше

This post очень полезен, но я все еще не могу настроить мой набор.

Эти два файла находятся в ../public_html/testsite/

.htaccess
RewriteEngine on
RewriteRule ^index.html.var$ http://www.example.com:3000/$1 [L,P,QSA]
RewriteRule (.*) http://www.example.com:3000/$1 [P,L]

Примечание: index.html isфайл, который обычно загружается при посещении здесь

app.js:

const http = require('http');

const hostname= '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('NodeJS server running on Shared Hosting\n');
});

server.listen(port, hostname, () => {
  console.log('Server running at http://' + hostname + ':' + port + '/');
});

Чтобы запустить веб-сервер:

> cd ../public_html/testsite
> node app.js
Server running at http://127.0.0.1:3000

В браузере я ввожу:

www.example.com:3000

Я ожидал увидеть в браузере

NodeJS server running on Shared Hosting

Вопросы:

  1. Должен ли я использовать свой собственный адрес домена Godaddy для имени хоста в .htaccessили долженэто будет localhost?
  2. Есть ли идея перенаправить www.example.com:3000 (в браузере) на http://localhost:3000 (на сервере GoDaddy)?
  3. Я перепробовал все виды перестановок (используя мой IP-адрес или доменное имя, разные номера портов и т. Д.)
  4. Я думаю, что я близок, но мне нужно попробовать несколько идей!

1 Ответ

0 голосов
/ 17 января 2019

Порт 3000, 8080 и т.п. обычно используются в целях разработки, поскольку при разработке может быть полезно иметь несколько серверов, работающих одновременно, например, один на порту 3000, один на порту 3001 и т. Д.

Однако , в Интернете HTTP подается на порт 80, а HTTPS - на порт 443. Таким образом, в вашей реализации сервера вы должны установить порт динамически: он не должен совпадать работаете ли вы в производстве и в разработке!

Я лично использую тот факт, что в моей производственной среде (т. Е. Для вас, на машинах развертывания GoDaddy) переменная среды PORT уже установлена ​​на 80, тогда как на моей локальной машине я ее не устанавливаю, поэтому могу напишите это:

const express = require('express');
const port = process.env.PORT || 3000; // 3000 on my machine, 80 on GoDaddy's server
const app = express();
app.listen(port, () => console.log(`App listening on port ${port}`));

И я получаю доступ к серверу по этим URL:

http://localhost:3000/
http://example.com:80/
http://example.com/

Последние два одинаковы, поскольку, как было сказано ранее, порт HTTP по умолчанию - 80.

...