Apache反向代理设置(对于node.js应用程序)不起作用?

时间:2015-09-18 22:15:42

标签: node.js apache proxy apache2 reverse-proxy

我想做什么

运行命令(export PORT=3000 && node server.js)后,我的node.js应用程序(_without())将在:http://example.com:3000/提供。

考虑到Apache已经在服务器上使用端口80,命令(export PORT=80 && node server.js)将不起作用。

由于我是Node.js的新手,在http://example.com/(即端口80)上提供node.js应用程序的简单方法是将Apache设置为反向代理。

这是我试过的

/etc/apache2/sites-available/example.com.conf

试用(1):

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/example.com/public
    ErrorLog /var/www/example.com/logs/error.log
    CustomLog /var/www/editor.aahanblog.com/logs/access.log combined

    ProxyPass / http://example.com:3000/
    ProxyPassReverse / http://example.com:3000/
</VirtualHost>

这只显示public目录的目录列表。因此,在这种情况下,请求未到达node.js app。

试用(2):

<VirtualHost *:80>
    ServerName example.com
    ServerAlias *.example.com
    DocumentRoot /var/www/example.com/public
    ErrorLog /var/www/example.com/logs/error.log
    CustomLog /var/www/example.com/logs/access.log combined

    ProxyRequests off

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

    <Location /var/www/example.com/public>
        ProxyPass http://mydomain:3000/
        ProxyPassReverse http://mydomain:3000/
    </Location>
</VirtualHost>

这也不起作用。它带我到一些默认的apache页面。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

将您的位置指令更改为

<Location /> from <Location /var/www/example.com/public>

基本上,Location指令是URL

的路径组件的前缀