3

目标是在不杀死 apache 的情况下使用 nodejs 监听端口 80。

我不得不说我在网络方面的知识非常基础。

更新

我正在尝试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再次访问该 URL。

为什么我无法访问 URL http://localhost/test?是因为代理试图到达http://localhost:3000/而不是遵循别名 /test 的路径吗?

谢谢 !

4

2 回答 2

4

您需要在 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>

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

于 2013-01-05T07:01:03.680 回答
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
于 2014-12-25T19:29:10.370 回答