【问题标题】:How do I get nodejs to run without a port number on a Apache server如何让 nodejs 在没有 Apache 服务器上的端口号的情况下运行
【发布时间】:2025-11-28 04:05:02
【问题描述】:

我有一个在 codeigniter 环境中运行的 nodejs api 应用程序。我试图在不使用 url 中的端口号的情况下访问 nodejs api

目前你只能点击节点api在

http://wrl.xx.com:8010/api

我想通过如下网址访问它:

http://wrl.xx.com/api/

我尝试运行反向代理但没有成功

<VirtualHost *:80>
ServerName wrl.xx.com

ProxyRequests off

<Proxy *>
        Order allow,deny
        Allow from all
</Proxy>

ProxyPass / http://localhost:8010/
ProxyPassReverse / http://localhost:8010/
ProxyPreserveHost on
</VirtualHost>

【问题讨论】:

    标签: javascript php node.js apache codeigniter


    【解决方案1】:

    假设您打算通过将/api 视为根路径来区分查找 nodejs 应用程序的请求和查找 codigniter 应用程序的请求,请尝试:

    ProxyPass /api http://localhost:8010/api
    ProxyPassReverse /api http://localhost:8010/api
    

    查看ProxyPassProxyPassReverse 了解更多魔法。

    【讨论】:

    • 谢谢,这正是我所需要的
    【解决方案2】:

    免责声明:我没有使用 codeigniter 的经验,所以这可能是不相关的,或者是错误的。

    你的 node.js 服务器监听 8010 端口,这是非标准的,所以你需要在 URL 中指明它。

    您似乎暗示 codeigniter 已经在监听标准端口 (80)。 在不了解 codeigniter 的情况下,我看到的解决问题的方法是将所有 node.js url 托管在 codeigniter 中,并将它们重定向到端口 8010:

    Client call /node on port 80
    CodeIgniter call /node on himself at port 8010
    Node get the request and answer
    Code igniter gove the answer to the client
    

    反之亦然,即在 node.js 中托管任何 codeigniter URL,并将它们重定向到 codeigniter 将侦听的任何端口。

    或者您需要配置 Apache 以将请求重定向到端口上的任何 codeigniter 或 8010,具体取决于 url。

    【讨论】:

      最近更新 更多