Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
node.js应用程序是否必须侦听端口?_Node.js_Ssh_Port - Fatal编程技术网

node.js应用程序是否必须侦听端口?

node.js应用程序是否必须侦听端口?,node.js,ssh,port,Node.js,Ssh,Port,我在使用cPanel的共享主机上运行Apache服务器。我在服务器上成功安装了node.js,但问题是我的主机只能打开出站端口,我需要能够通过浏览器访问端口。所以,我想知道我是否不必使用端口?例如,下面是我的代码: const express = require('express'); const req = require('request') var app = express(); var port = process.env.PORT || 8016; var server = ap

我在使用cPanel的共享主机上运行Apache服务器。我在服务器上成功安装了node.js,但问题是我的主机只能打开出站端口,我需要能够通过浏览器访问端口。所以,我想知道我是否不必使用端口?例如,下面是我的代码:

const express = require('express');
const req = require('request')

var app = express();
var port = process.env.PORT || 8016;

var server = app.listen(port, () => {
    console.log('Server listening on ' + port);
});

例如,我是否可以使应用程序不需要端口,它离开域而不是example.com这样的端口?就像我想添加一个
app.route()
我能在公共html中这样做吗?

所有服务器进程都必须在一个端口上侦听

当您看到像这样的URL时,有一个隐含的端口。如果协议为http,且URL中没有端口,则浏览器将自动使用端口80。因此,如果该URL到达服务器,那是因为example.com上的服务器正在侦听端口80。
https
的默认端口为443

例如,我是否可以使应用程序不需要端口,而是离开域,而不是像example.com这样的端口

不可以。您的应用程序服务器需要侦听端口。正如我上面所说的,如果端口是该协议的“默认”端口,那么您可以将该端口排除在URL之外,并且处理URL的任何人都将自动使用正确的端口。但是,您的服务器仍然必须在正确的端口上侦听

就像我想添加一个app.route()一样,我能在public_html中这样做吗

我不知道这是什么意思。您不会在HTML文件中添加路由。添加路由将在服务器上的JS文件中完成

我在使用cPanel的共享主机上运行Apache服务器

您通常无法运行node.js服务器,该服务器直接为来自该类型主机的传入连接提供服务。您需要支持长时间运行的服务器进程的主机,并将传入连接路由到这些进程。您的提供商可能会提供(不同级别的服务),或者您可能需要不同的提供商

有几种方法可以使用Apache作为代理将传入连接路由到node.js服务器,但这通常不是您可以在共享托管环境中配置的。这通常需要更高级别的托管服务

也可以使用node.js作为Apache的批处理执行环境(有点类似于Apache运行PHP的方式),但这并不运行node.js服务器。这只是在Apache中每次点击特定的路由时从头开始运行node.js脚本(所以这可能不是您想要或询问的内容)


您可能会发现这是一个有用的阅读:。

如果没有端口,web服务是不可访问的。您在浏览器中输入的域名只是隐藏了复杂性。将转到端口80。将转到端口443。您应该能够将Apache httpd配置为@Craigmithell-您的主机会将传入的端口80请求重定向到您的域中的node.js服务器吗?这就是你需要的。还有,你的主机允许长时间运行node.js服务器吗?我注意到上面说的是
EACCES 0.0.0:443
,所以说服务器是0.0.0.0?这就是发生此错误的原因吗?@Craigmithell-您是否尝试过。如果您这样做了,您会很快发现在1024以下的任何端口上启动服务器都需要提升的权限,如果他们没有正确的权限,这是一个典型的错误。