【问题标题】:Can't access node.js webserver with godaddy shared hosting URL无法使用 godaddy 共享主机 URL 访问 node.js 网络服务器
【发布时间】:2019-06-11 22:19:04
【问题描述】:

当我在浏览器中输入www.example.com:3000 时,我收到此错误(其中“example”是我的域的名称)

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

我做过这些事情:

  1. 在我的 GoDaddy 共享帐户上安装了 node.js
  2. 创建了一个文件夹 ../public_html/testsite
  3. 在该文件夹中放置了两个文件:app.js 和 .htaccess。
  4. 启动网络服务器:node app.js
  5. 转到浏览器并输入我的域的 URL 和端口:
  6. 收到上面的错误信息

这个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 是您访问此处时通常加载的文件

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. 我应该在.htaccess 中使用我自己的godaddy 域地址作为主机名还是应该是localhost?
  2. 是否将www.example.com:3000(在浏览器中)重定向到http://localhost:3000(在GoDaddy 服务器上)?
  3. 我尝试了各种排列方式(使用我的 IP 地址或域名、不同的端口号等)
  4. 我想我已经接近了,但需要一些想法来尝试!

【问题讨论】:

  • 您链接的说明将两个文件直接放在public_html 文件夹中。我想你应该试着把它们移到那里。我也认为你应该去 example.com,没有端口 3000。如果你去example.com/testsite,你现在拥有的东西可以工作

标签: javascript node.js shared-hosting


【解决方案1】:

端口 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。

【讨论】:

  • 当输入example.com:80时,它会简单地加载index.html,因为网站不会访问运行在GoDaddy服务器上的网络服务器)。该网站已经有客户端 html 和客户端 javascript。我想添加各种服务(估计是用同一个网站url+端口号访问的)。
  • 目前还不清楚您要做什么。简而言之,您将无法在 GoDaddy 上部署服务于 80 以外端口的网站。您有什么不明白的地方吗?
  • 肯定有我不明白的事情(这就是我发布问题的原因,实际上:))。我确实有一个带有嵌入式 ajax 调用的 .html 文件,现在调用各种快速路由端点!您对托管在 ONE 端口上的服务器的评论很有帮助。我误解了路由端点被映射到特定端口(例如 www.example.com:8000 可以访问路由) - 这是我的主要困惑。我将准备一个端到端的教程,说明我为使其工作而采取的步骤 - 我期待着你们的 cmets。
  • 这似乎涉及许多文件和配置。不要忘记添加mcve ;)
猜你喜欢
  • 2017-04-30
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-25
  • 2013-09-27
  • 1970-01-01
相关资源
最近更新 更多