我有一个 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* 指令。