node.js - 如何运行 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,但现在我提到它也许很熟悉?)。
如果您正在运行 Node 服务器并将其设置为侦听端口 9001,但未将端口 9001 暴露给您的安全组中的 Internet,则实际上只能从 localhost 访问它。
您可以在这里做两件事:
1) 在 AWS 控制台中,更新您的实例的安全组以允许目标端口 (9001) 上的入站连接。
这将起作用,但它远非可取,因为您直接公开您的应用程序可能会出现安全问题。
2) 您可以在 Apache 配置(或适当的 vhost.conf 等)中设置并利用 Apache 的反向代理功能,并将ProxyPass
https ://localhost:9001添加为入站请求的目的地。(您可能需要使用 localhost 的 IP - https://127.0.0.1 - 作为目标。对于 HTTPS,您还需要确保 Apache 已设置为读取您的证书,并且包含.ProxyPassReverse
SSLProxyEngine
on
(据我所知,nginx 是最常见的放置在 Node 应用程序前面作为反向代理的东西,但 Apache 可以充当这个角色。)
推荐阅读
- chart.js - ChartJs如何通过数据集点显示水平线和垂直线,并在轴上显示它们的值?
- node.js - 每当我在同一视图上重新呈现错误时,应用程序都会显示未定义的帖子
- c# - 如何在对象中模拟复杂的嵌套成员或保留为单独的变量?
- java - Java 字符问题修复,但想了解错误数据是如何生成的
- excel - Powershell - 将'wrapText'样式应用于某些单元格会导致整个工作表换行
- c - 以递归方式计算 2 个具有唯一值(无重复值)的字符串中的相等值
- java - 输入不等于字符串
- autodesk-data-management - Autodesk Data Management API - 获取图像响应返回二进制文件。怎么办?
- excel - 添加第三个系列时出现参数无效错误
- django - Django Okta 集成