![Apache Reverse Proxy не работает внутри VirtualHost, на котором запущено Mono Web Application](https://rvso.com/image/568275/Apache%20Reverse%20Proxy%20%D0%BD%D0%B5%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82%20%D0%B2%D0%BD%D1%83%D1%82%D1%80%D0%B8%20VirtualHost%2C%20%D0%BD%D0%B0%20%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D0%BE%D0%BC%20%D0%B7%D0%B0%D0%BF%D1%83%D1%89%D0%B5%D0%BD%D0%BE%20Mono%20Web%20Application.png)
У меня есть веб-приложение 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*.