Apache-2.4
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 的請求仍在轉發到根應用程序。我對此很陌生,所以這可能很明顯。
根據mod_proxy 文件:
已配置的 ProxyPass 和 ProxyPassMatch 規則按照配置順序進行檢查。第一條匹配的規則獲勝。
因此,由於配置中的第一個指令是代理
/
,它將匹配每個 URI,第二個ProxyPass
是無操作。您應該對ProxyPass
規則進行排序,以便最具體的規則位於配置文件中的第一個。