如何运行nodejs服务器以监听自定义端口:9001和apache监听其他请求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何运行nodejs服务器以监听自定义端口:9001和apache监听其他请求相关的知识,希望对你有一定的参考价值。

所以,我有一个apache服务器,它监听所有请求。现在,我想运行一个节点https服务器应用程序以监听端口9001。当我创建https服务器并使其监听9001时,它似乎可以在同一台计算机上的localhost上运行。因此,如果我访问https://localhost:9001,则会得到所需的页面。但是,当我从外部访问公共网站以及9001端口时,就会在Apache上收到它。

我的配置是Amazon Linux AMI

答案

此处未提供您的Apache服务器的确切配置;但是,最有可能只监听端口80(普通HTTP端口)上的请求。

由于您在AWS上运行,您可能会使用安全组来设置实例,该安全组被设置为允许端口80上的入站连接。(我相信,我见过的大多数指南都已在安全组中设置了入站规则。还要打开端口22以便通过SSH连接到实例,尽管这里不作考虑,因为它不影响Apache,但是现在我提到它了,这也许已经很熟悉了。]

如果您正在运行节点服务器,并将其设置为侦听端口9001,但未将端口9001暴露给安全组中的Internet,则实际上只能从本地主机访问它。

您可以在这里做两件事:

1]在AWS控制台中,为您的实例更新安全组,以允许目标端口(9001)上的入站连接。

这将起作用,但是当您直接公开可能会带来安全问题的应用程序时,它远非可取。

2]您可以在Apache配置(或适当的vhost.conf等)中设置ProxyPassProxyPassReverse,以利用Apache的反向代理功能,并将https://localhost:9001添加为入站请求的目标。 (您可能需要使用本地主机的IP-https://127.0.0.1-作为目的地。对于HTTPS,还需要确保已设置Apache来读取证书,并包括SSLProxyEngine和[C0 ]。

((据我收集,nginx是作为反向代理摆在Node应用程序前面的最常见的东西,但是Apache可以扮演这个角色。)

以上是关于如何运行nodejs服务器以监听自定义端口:9001和apache监听其他请求的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS:如何获取服务器的端口?

NodeJs端口被占用的情况

nodejs监听服务端口并且代理请求与静态资源

如何检查 TCP 端口是不是已被监听?

nodejs如何检查哪个IP访问80端口

配置 nginx 以允许自定义端口上的 HTTPS 流量