Apache2代理和NodeJS

时间:2019-10-29 14:09:41

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

我使用NodeJS进行了一个项目,该项目运行良好。现在,我想将其部署到安装了Apache2的Web服务器上,并尝试将Apache2配置为可将所有内容重定向到我的App的代理。

这是我的配置文件:

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName example.com
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        SSLEngine On
        SSLCertificateKeyFile <PATH/TO/KEY>
        SSLCertificateFile <PATH/TO/CRT>

        ProxyRequests Off

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

        <Location /app>
                ProxyPass http://127.0.0.1:8081/
                ProxyPassReverse http://127.0.0.1:8081/
        </Location>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>
</IfModule>

但是我有一些问题:

NodeJS正在使用express监听端口8081。该路由不知道任何“ / app”。因此,如果我更改

<Location /app>
        ProxyPass http://127.0.0.1:8081/
        ProxyPassReverse http://127.0.0.1:8081/
</Location>

<Location />
        ProxyPass http://127.0.0.1:8081/
        ProxyPassReverse http://127.0.0.1:8081/
</Location>

一切都很好。但是在这种情况下,所有请求都将转发到应用程序。

如果我保留

<Location /app>
        ProxyPass http://127.0.0.1:8081/
        ProxyPassReverse http://127.0.0.1:8081/
</Location>

我的浏览器将我从 example.com/app 重定向到 example.com ,并且不再起作用。

我想要它做什么:

-)将所有example.com/app请求转发到http://127.0.0.1:8081/

-)保留浏览器网址(例如example.com/app),并将端点添加到“ / app”之后,例如example.com/app/login将转发到http://127.0.0.1:8081/login

我尝试了很多事情(即使是那些定义上没有效果的东西),但是我不知道我错过了什么才能使它起作用。

0 个答案:

没有答案