Apache 代理到子目录不起作用

Apache 代理到子目录不起作用

我有一个在端口 5000 上运行的 .NET 应用程序和一个在端口 8080 上运行的 node.js 应用程序。我想将对 /app 目录的请求转发到节点应用程序。我有以下配置。

<VirtualHost *:443>
    ProxyPreserveHost     On
    ProxyPass             / http://127.0.0.1:5000/
    ProxyPassReverse      / http://127.0.0.1:5000/
    ProxyPass             /app/ http://127.0.0.1:8080/
    ProxyPassReverse      /app/ http://127.0.0.1:8080/
    ErrorLog              /var/log/httpd/amnathrig-error.log
    CustomLog             /var/log/httpd/amnathrig-access.log common
    SSLEngine On
    SSLCertificateFile /etc/letsencrypt/live/amnathrig.app/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/amnathrig.app/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/amnathrig.app/chain.pem
    SSLCACertificateFile /etc/letsencrypt/live/amnathrig.app/chain.pem
</VirtualHost>

但是,对 /app 的请求仍被转发到根应用程序。我对此还不太熟悉,所以这可能是显而易见的。

答案1

根据mod_proxy 文档

按照配置的顺序检查已配置的 ProxyPass 和 ProxyPassMatch 规则。第一个匹配的规则获胜。

因此,由于配置中的第一个指令是代理/,它将匹配每个 URI,因此第二个指令ProxyPass是无操作。您应该对ProxyPass规则进行排序,以便最具体的规则位于配置文件中的第一个。

相关内容