将子域发送到node.js

jwe*_*ner 18 apache virtualhost node.js

我的工作在运行apache的ubuntu服务器(10.10)上运行几个不同的内部Web应用程序.我目前正在开发另一个Web应用程序,我正在认真考虑在定制的node.js Web服务器上进行开发.我想要这样做的理由是:

  1. 速度/可扩展性
  2. 安全性 - 页面将通过交换机...案例提供,而不是仅仅为(潜在的恶意)用户提供他们要求的服务.
  3. 易于设置 - 我的意图是这是一个开源项目,node.js更容易设置用户,而不是处理apache/IIS /等.

我的问题是,在我有apache监听端口80的服务器上,如何将某个子域传递给node.js. 我已经看过几篇关于使用apache虚拟主机传递它的文章,但这似乎打败了使用node.js的目的.如果我必须通过apache,那么我避免apache/IIS的所有三个原因都已自我解决.

我知道我可以使用不同的端口(:8080?),但从最终用户的角度来看,放入自定义端口非常困惑.还有其他想法吗?

谢谢

小智 22

<VirtualHost *:80>
ServerName subdomain.yourdomain.com
ProxyPreserveHost on
ProxyPass / http://localhost:8080/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

感谢http://www.chrisshiplet.com/2013/how-to-use-node-js-with-apache-on-port-80/


ani*_*ija 7

如果 socket.io 节点正在运行,请务必启用一些 apache mods:

  1. a2enmod 代理
  2. a2enmod proxy_balancer
  3. a2enmod proxy_express
  4. a2enmod proxy_http

在文件/etc/apache2/sites-available/chat.example.com.conf 中


<VirtualHost *:80>
    ServerName chat.example.com

    <Location "/">
        ProxyPreserveHost On
        ProxyPass http://localhost:3000/
        ProxyPassReverse http://localhost:3000/
    </Location>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

那么当然 service apache2 reload


Adr*_*ien 5

如何做反过来的事情:将节点绑定到端口80,处理针对子域的流量并将其用作apache的反向代理以用于其他所有事情?