![Apache 反向代理無法在執行 Mono Web 應用程式的 VirtualHost 內運作](https://rvso.com/image/568275/Apache%20%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E7%84%A1%E6%B3%95%E5%9C%A8%E5%9F%B7%E8%A1%8C%20Mono%20Web%20%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F%E7%9A%84%20VirtualHost%20%E5%85%A7%E9%81%8B%E4%BD%9C.png)
我有一個單聲道 Web 應用程式與下面的虛擬主機一起運行。它在 Apache 2.2.20 / Ubuntu 11.10 上運行。我嘗試在此虛擬主機內新增反向代理,以便我可以對相同網域進行非同步或 AJAX 類型呼叫。我的非同步請求在許多瀏覽器呼叫另一個網域上的服務時會出現問題(跨網域請求問題)。我想使用反向代理呼叫其他服務http://www.whatever.com/monkey/。因此,我添加了指令和 top 指令來嘗試使其工作。但這很奇怪……我所做的一切似乎都沒有任何效果。我可以將完全相同的標記放入我的預設網站虛擬主機檔案中,效果很好。這是什麼交易?其中一些 Mono 指示是否會導致問題?
<VirtualHost *:80>
ServerName www.whatever.com
ServerAlias whatever.com *.whatever.com
ServerAdmin [email protected]
DocumentRoot /home/myuser/web/whatever
ProxyRequests off
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
<Location /monkey/>
ProxyPass http://www.google.com/
ProxyPassReverse http://www.google.com/
</Location>
MonoServerPath www.whatever.com "/usr/bin/mod-mono-server2"
MonoSetEnv www.whatever.com MONO_IOMAP=all
MonoApplications www.whatever.com "/:/home/myuser/web/whatever"
<Location "/">
Allow from all
Order allow,deny
MonoSetServerAlias www.whatever.com
SetHandler mono
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI "\.(?:gif|jpe?g|png)$" no-gzip dont-vary
</Location>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript
</IfModule>
</VirtualHost>
答案1
我猜測 <Location /> SetHandler mono 正在應用於 <Location /monkey>。您可能需要在 <Location /monkey> 內明確「SetHandler none」來刪除單聲道處理程序並讓 Apache 執行 ProxyPass* 指令。