続:httpとhttpsしか通さないproxy

  • 投稿日:
  • by
  • カテゴリ:

「や」氏から、コメントをいただいたので、いろいろ調べてみたわけですよ。

Apache2ならProxyPassやProxyPassReverseで細工してみるってのはどうでしょう?
Posted by: や at 2005年05月19日 09:45

検索してみると、とりあえず、以下のような設定をすればいいらしい。

<IfModule mod_proxy.c>
    ProxyPass   /hddrecoder/   http://<hddrecoderのIPアドレス>/
    ProxyPassReverse    /hddrecoder/   http://<hddrecoderのIPアドレス>/
</IfModule>

ふむふむ。と、設定してみる。とりあえず、うまくいったように見えたのだが……。HTML内部に<a href="/foo.html">foo</a>という記述があると、http://server.domain/hddrecoder/foo.htmlではなく、http://server.domain/foo.htmlへのアクセスとなってしまい、おかしくなってしまいます。

う~ん。どうしようか。と悩むこと数分。考えてみれば、リクエストのURLを書き換えればいいのだから、mod_rewriteか。ということで、これまで使ったこと無かったから、いろいろ悩む。最初は、うまくいかなかったものを一つずつ書き換えていたのですが、書き換え対象があまりにも多いで面倒になって、ちょっとひとひねり。できたのが、以下の設定。

<IfModule mod_proxy.c>
    ProxyPass   /hddrecoder/   http://<hddrecoderのIPアドレス>/
    ProxyPassReverse    /hddrecoder/   http://<hddrecoderのIPアドレス>/
    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTP_REFERER} hddrecoder
        RewriteCond %{REQUEST_URI}  !hddrecoder
        RewriteRule ^/(.*)  /hddrecoder/$1 [R]
    </IfModule>
</IfModule>

たぶん、これで問題ないと思う。