【问题标题】:node.js application running on a port should have no port visible in the URL bar在端口上运行的 node.js 应用程序应该在 URL 栏中没有可见的端口
【发布时间】:2015-03-23 16:06:05
【问题描述】:

我有 5 个域指向同一台机器,假设这些域是:

example1.com
example2.com
example3.com
example4.com
example5.com
  • 我的服务器有一个由apache管理的虚拟主机文件,它控制着这5个域。
  • 我有一个 node.js 应用程序在端口 3000 上运行。

如果我连接到 5 个域中的任何一个,并在最后输入 :3000,我可以看到 node.js 应用程序启动屏幕。

例如,如果我连接到example1.com:3000,它会为我提供可以通过连接到example2.com:3000example3.com:3000 等访问的同一页面(node.js 应用程序)。我理解为什么会发生这种情况。

但是,我正在尝试编辑我的配置以满足以下条件:

  • 用户只能在输入example5.com 时连接到节点应用,而不能连接到任何其他域。
  • 用户在尝试访问节点应用时无需输入端口号example5.com:3000

我搜索并找到了一些信息,这些信息让我相信这通常是通过设置反向代理来实现的,但我发现的大多数示例都是使用 nginx 或 node.js 来实现的。用 apache 找出一个反向代理解决方案会很好,这样我就不必用 node 或 nginx 重写我所有的虚拟主机逻辑。

【问题讨论】:

  • 几篇值得一读的文章here.
  • 嗯 - 基本上你的问题确实是'如何将 apache 设置为 node.js 的反向代理' - 因为这是唯一有意义的选项。向谷歌询问这个结果:garr.me/blog/…

标签: node.js apache port virtualhost reverse-proxy


【解决方案1】:

您需要设置反向代理。一个简单的方法是使用 nginx。安装并启动 nginx 并在您的配置文件中输入以下内容:

server {
    listen 80;
    server_name example1.com;

    location / {
         proxy_pass http://localhost:3000;
    }
}

然后在端口 3000 上运行您的节点服务器。

【讨论】:

    猜你喜欢
    • 2022-01-21
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 2019-05-27
    • 2021-12-22
    • 1970-01-01
    相关资源
    最近更新 更多