![Mono Web アプリケーションを実行している VirtualHost 内で Apache リバース プロキシが動作しない](https://rvso.com/image/568275/Mono%20Web%20%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%20VirtualHost%20%E5%86%85%E3%81%A7%20Apache%20%E3%83%AA%E3%83%90%E3%83%BC%E3%82%B9%20%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7%E3%81%8C%E5%8B%95%E4%BD%9C%E3%81%97%E3%81%AA%E3%81%84.png)
私は以下の仮想ホストでモノラルウェブアプリケーションを実行しています。Apache 2.2.20 / Ubuntu 11.10で実行しています。この仮想ホスト内にリバースプロキシを追加して、この同じドメインに非同期またはAJAXタイプの呼び出しを行えるようにしようとしました。私の非同期リクエストは、他のドメインにあるサービスを呼び出す多くのブラウザで問題を引き起こします(クロスドメインリクエストの問題)。私は、この他のサービスへのリバースプロキシ呼び出しを、http://www.whatever.com/monkey/そこで、これを機能させるために、ディレクティブと top ディレクティブを追加しました。でも、奇妙なことに、何をしても効果がないようです。まったく同じマークアップをデフォルトの Web サイトの仮想ホスト ファイルに配置すれば、問題なく動作します。一体何が問題なのでしょうか? これらの 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> に適用されていると推測します。mono ハンドラーを削除して Apache に ProxyPass* ディレクティブを実行させるには、<Location /monkey> 内に明示的に「SetHandler none」を指定する必要があります。