Apache Reverse Proxy не работает внутри VirtualHost, на котором запущено Mono Web Application

Apache Reverse Proxy не работает внутри VirtualHost, на котором запущено Mono Web Application

У меня есть веб-приложение mono, работающее с этим виртуальным хостом ниже. Оно работает на 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>. Вероятно, вам понадобится явное "SetHandler none" внутри <Location /monkey>, чтобы удалить обработчик mono и позволить Apache выполнить директивы ProxyPass*.

Связанный контент