
Apache リバース プロキシにエラーが発生しました。現在、4 つの Web サイトにリバース プロキシを実行しています。
- 1.1.1.1/a
- 1.1.1.2/b
- 1.1.1.3/c
- 1.1.1.4/日
a および b の Web サイトにリバース プロキシしても問題は発生しません。イメージは良好で、問題はありません。
ただし、c および d の Web サイトに関しては、画像が読み込まれません。access_log には、次のログがあります。
- - [08/May/2014:10:40:36 +0800] "GET /whatshot_v3/images/promo/img_samplePromo.jpg HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/menu/faq_butt_03.png HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/banner/text_planprice.gif HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/banner/text_services.gif HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/banner/text_account.gif HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/shortcut/bann_store.gif HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/shortcut/bann_rewards.gif HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/shortcut/bann_idd.gif HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/footer/img_customerService.png HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/footer/icon_fb.png HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/footer/icon_tw.png HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/footer/icon_rss.png HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/footer/icon_share.png HTTP/1.1" 404 1245
Apache リバースプロキシサーバー自体からのアクセスには問題はありません。外部からアクセスすると問題が発生します。
別のマシンで URL を直接入力してみると、画像が読み込まれます。
1.1.1.1 - - [08/May/2014:10:19:00 +0800] "GET **/d/images_v3/footer/icon_share.png** HTTP/1.1" 200 869 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36
1.1.1.1 - - [08/May/2014:10:18:24 +0800] "GET **/images_v3/footer/icon_share.png HTTP/1.1" 404 1245** "htt://1.2.3.4/digi/landing.do" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36"
ご覧のとおり、最初のリンクは機能しています。 2 番目のリンクは機能していません。
通常どおり Web ページをリクエストすると、2 番目のリンクがリクエストされ、パスが見つからないため 404 エラーが発生します。
最初のリンクを直接入力すると、画像が見つかりました。
リンクを入力すると、c および d の Web サイトがリダイレクトされることに気づきました。これが問題の原因です。
1.1.1.3/c --> 1.1.1.3/c/index_other.html
1.1.1.4/d --> 1.1.1.4/d/landing.do
これが私のApacheリバースプロキシ設定です
<VirtualHost *:80>
#ServerAdmin [email protected]
#DocumentRoot /www/docs/dummy-host.example.com
#ServerName dummy-host.example.com
ErrorLog logs/arp_error_log
CustomLog logs/arp_access_log common
ProxyRequests Off
<Location /a>
ProxyPass http://1.1.1.1/a
ProxyPassReverse http://1.1.1.1/a
</Location>
<Location /b>
ProxyPass http://1.1.1.2/b
ProxyPassReverse http://1.1.1.2/b
</Location>
<Location /c>
ProxyPass http://1.1.1.3/index_other.html
ProxyPassReverse http://1.1.1.3/index_other.html
</Location>
<Location /d>
ProxyPass http://1.1.1.4:8080
ProxyPassReverse http://1.1.1.4:8080
</Location>
</VirtualHost>
では、どうすればこの問題を解決できるでしょうか? mod_rewrite と mod_proxy_html を調べてきましたが、問題を解決することはできませんでした。
答え1
画像ごとに別の場所コンテナを使用できます。
私はこれをテストしていませんが、多かれ少なかれこれでいいはずです。
/cの場合:
<Location /c/images_v3>
ProxyPass http://1.1.1.3/images_v3
ProxyPassReverse http://1.1.1.3/images_v3
</Location>
<Location /c>
ProxyPass http://1.1.1.3/index_other.html
ProxyPassReverse http://1.1.1.3/index_other.html
</Location>
/d については、何が起こっているのかよくわかりません。1.1.1.4:8080 にリダイレクトがあり、すべてが /landing.do にリダイレクトされるのでしょうか? この場合、以下は役に立ちません。
<Location /d/images_v3>
ProxyPass http://1.1.1.4:8080/images_v3
ProxyPassReverse http://1.1.1.4:8080/images_v3
</Location>
<Location /d>
ProxyPass http://1.1.1.4:8080
ProxyPassReverse http://1.1.1.4:8080
</Location>