У меня есть монофоническое веб-приложение, работающее с этим виртуальным хостом ниже. Он работает на Apache 2.2.20 / Ubuntu 11.10. Я попытался добавить обратный прокси-сервер внутри этого виртуального хоста, чтобы я мог выполнять асинхронные вызовы или вызовы типа AJAX в этот же домен. Мои асинхронные запросы будут иметь проблемы во многих браузерах, вызывающих службы, которые находятся в другом домене (проблема с междоменными запросами). Я хочу выполнять обратные прокси-вызовы этой другой службы, используя http://www.whatever.com/monkey/. Итак, я добавил директиву и верхнюю директиву, чтобы попытаться заставить эту работу работать. Хотя это странно ... кажется, что я ничего не делаю. Я могу поместить такую же разметку в файл virtualhost своего веб-сайта по умолчанию, и он отлично работает. В чем дело? Некоторые из этих директив Mono вызывают проблемы?
<VirtualHost *:80>
ServerName www.whatever.com
ServerAlias whatever.com *.whatever.com
ServerAdmin whatever@gmail.com
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>
Я предполагаю, что моно <Location /> SetHandler применяется к <Location / monkey>. Вероятно, вам понадобится явный "SetHandler none" внутри <Location / monkey>, чтобы удалить обработчик mono и позволить Apache выполнять директивы ProxyPass *.