![Apache Reverse Proxy funktioniert nicht in einem VirtualHost, auf dem eine Mono-Webanwendung ausgeführt wird](https://rvso.com/image/568275/Apache%20Reverse%20Proxy%20funktioniert%20nicht%20in%20einem%20VirtualHost%2C%20auf%20dem%20eine%20Mono-Webanwendung%20ausgef%C3%BChrt%20wird.png)
Ich habe eine Mono-Webanwendung, die mit dem unten stehenden virtuellen Host läuft. Sie läuft auf Apache 2.2.20 / Ubuntu 11.10. Ich habe versucht, einen Reverse-Proxy in diesen virtuellen Host einzufügen, damit ich asynchrone oder AJAX-artige Aufrufe an dieselbe Domäne senden kann. Meine asynchronen Anfragen hätten in vielen Browsern Probleme, Dienste aufzurufen, die sich in einer anderen Domäne befinden (Problem mit domänenübergreifenden Anfragen). Ich möchte Reverse-Proxy-Aufrufe an diesen anderen Dienst senden, indem ichhttp://www.whatever.com/monkey/. Also habe ich die Direktive und die Top-Direktive hinzugefügt, um zu versuchen, dies zum Laufen zu bringen. Es ist jedoch seltsam ... nichts, was ich tue, scheint irgendeinen Effekt zu haben. Ich kann genau dasselbe Markup in meine Standard-Virtualhost-Datei für Websites einfügen und es funktioniert großartig. Was ist das Problem? Verursachen einige dieser Mono-Direktiven Probleme?
<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>
Antwort1
Ich würde vermuten, dass der <Location /> SetHandler mono auf <Location /monkey> angewendet wird. Sie benötigen wahrscheinlich ein explizites „SetHandler none“ innerhalb von <Location /monkey>, um den Mono-Handler zu entfernen und Apache die ProxyPass*-Direktiven ausführen zu lassen.