避免nodejs和apache之间端口80的冲突

时间:2013-01-05 05:37:11

标签: apache node.js port express

目标是使用nodejs侦听端口80,而不会杀死apache。

我必须说我在网络中的知识是非常基本的。

更新

我正在尝试在我的本地计算机上使用ProxyPass ProxyPassReverse但是出了点问题。

    Alias /test /media/www-dev/public/test
    <Directory /media/www-dev/public/test>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            Allow from all
    </Directory>

    ProxyRequests off

   <Proxy *>
      Order deny,allow
      Allow from all
   </Proxy>
   <Location />
     ProxyPass /test http://localhost:3000/
     ProxyPassReverse /test http://localhost:3000/
   </Location>

当我在浏览器上启动http://localhost/test时,我收到一条消息Cannot GET /test/,如果我停止收听端口3000,那么我得到503 Service Temporarily Unavailable我的节点应用正在侦听港口3000。

如果选择“代理”行,我可以再次访问网址http://localhost/test

为什么我无法访问网址http://localhost/test?是因为代理尝试按照别名/测试的路径来到达http://localhost:3000/吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

您需要在apache中为您的节点应用和代理创建一个虚拟主机。

这是我的/etc/apache/sites-available/dogself.com

中的样子
<VirtualHost 69.164.218.75:80>
    ServerName dogself.com
    ServerAlias www.dogself.com
    DocumentRoot /srv/www/dogself.com/public_html/
    ErrorLog /srv/www/dogself.com/logs/error.log
    CustomLog /srv/www/dogself.com/logs/access.log combined

    ProxyRequests off

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

    <Location />
        ProxyPass http://localhost:3000/
        ProxyPassReverse http://localhost:3000/
    </Location>

</VirtualHost>

听起来你需要做很多研究才能让它工作。开始阅读文档

答案 1 :(得分:2)

虚拟主机的替代方法如下

<VirtualHost *:80>
    ServerAdmin info@DOMAIN.com
    ServerName DOMAIN.com
    ServerAlias www.DOMAIN.com
    ProxyRequests off

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

    <Location />
            ProxyPass http://localhost:3000/
            ProxyPassReverse http://localhost:3000/
    </Location>

</VirtualHost>

要修复内部服务器错误,只需启用正确的apache扩展。

sudo a2enmod proxy_http
sudo service apache2 restart