我们的客户不想在防火墙上打开端口 3000,而我们的应用程序使用该端口来运行 Node.js。
一直在尝试找到一种方法来重定向端口 3000 (node.js) 流量,以便我们仅使用域名即可启动我们的网站。我们还在同一个盒子上运行 Apache。AWS 上的 Ubuntu。
我现在基本上可以让它工作了,但是缺少了一小块拼图:它现在可以使用端口 3000 重定向到节点,但是我认为在启用此功能时,我以某种方式弄乱了到 apache 根的常规流量。(80 和 443 不再到 apache。)使用 3000,节点在 http 和 https 中均按预期响应。)
在进行这一更改之前,我们将通过以下方式测试节点:
app.company.net:3000/api/test (https)
它会返回:
预期为“{“status”:401,“message”:“无效的令牌或密钥”}”
当前问题:
- app.company.net/ <--不起作用,显示“{“code”:“ResourceNotFound”,“message”:“/不存在”}”应该打开门户。(http)
- app.company.net/ <--不起作用,显示“{“code”:“ResourceNotFound”,“message”:“/不存在”}”应该打开门户。(https)
- app.company.net/api/test <--WORKS,显示预期的“{“status”:401,“message”:“无效的令牌或密钥”}”。(http)
- app.company.net/api/test <--WORKS,显示预期的“{“status”:401,“message”:“无效的令牌或密钥”}”。(https)
我已经在 apache 中安装并配置了 mod_proxy,并且我的 httpd.conf 文件中的重定向如下所示:
<VirtualHost *:80>
ServerName app.company.net
ProxyPreserveHost on
ProxyPass / http://localhost:3000/
</VirtualHost>
如果我注释掉上面的内容,则会发生相反的情况。Apache 为所有服务,但如果不将 :3000 附加到 URL,我就无法让节点响应。
还尝试注释掉上述所有内容并处理 mod_rewrite,但这是它自己的兔子洞。经过几个小时的捣鼓,还是没有成功。我一直收到 /api/test 不存在于服务器上的错误。不过,这可能应该是另一张票。
我究竟做错了什么?
谢谢!
-P