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