首页 > 解决方案 > 如何运行 nodejs 服务器来监听自定义端口:9001 和 apache 监听其他请求

问题描述

所以,我有一个监听所有请求的 apache 服务器。现在我想运行一个节点 https 服务器应用程序来监听端口 9001。当我创建 https 服务器并让它监听 9001 时,它似乎在同一台机器上的 localhost 上工作。所以,如果我访问https://localhost:9001我会得到我想要的页面。但是当我从外部访问公共网站时,连同端口 9001 我在 Apache 上收到它。

我的配置是 Amazon Linux AMI

标签: node.jsapachesslserverhttpd.conf

解决方案


此处未给出 Apache 服务器的确切配置;但是,最喜欢只监听端口 80(普通 HTTP 端口)上的请求。

由于您在 AWS 上运行,您可能使用安全组设置您的实例,该安全组设置为允许端口 80 上的入站连接。(我相信我见过的大多数指南都让您在安全组中设置入站规则打开端口 22 以用于与实例的 SSH 连接,虽然这是一个例外,因为它不会影响 Apache,但现在我提到它也许很熟悉?)。

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

您可以在这里做两件事:

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

这将起作用,但它远非可取,因为您直接公开您的应用程序可能会出现安全问题。

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

(据我所知,nginx 是最常见的放置在 Node 应用程序前面作为反向代理的东西,但 Apache 可以充当这个角色。)


推荐阅读