Apache-2.4

Apache 代理到子目錄不起作用

  • June 12, 2022

我有一個在埠 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 的請求仍在轉發到根應用程序。我對此很陌生,所以這可能很明顯。

根據mod_proxy 文件

已配置的 ProxyPass 和 ProxyPassMatch 規則按照配置順序進行檢查。第一條匹配的規則獲勝。

因此,由於配置中的第一個指令是代理/,它將匹配每個 URI,第二個ProxyPass是無操作。您應該對ProxyPass規則進行排序,以便最具體的規則位於配置文件中的第一個。

引用自:https://serverfault.com/questions/1103092