![Apache 反向代理在运行 Mono Web 应用程序的 VirtualHost 中不起作用](https://linux22.com/image/568275/Apache%20%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E5%9C%A8%E8%BF%90%E8%A1%8C%20Mono%20Web%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%20VirtualHost%20%E4%B8%AD%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我有一个 Mono 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”来删除 mono 处理程序并让 Apache 执行 ProxyPass* 指令。