mod_proxyで長いURLは設定できない

Apacheのmod_proxyを使って長いURLを設定しようとした。

ProxyPass /something/ https://...長いURL...
ProxyPassReverse /something/ https://...長いURL...

以下のようなエラーが出る。

worker name (・・・長いURL・・・) too long

AWS S3のオブジェクトをCloud Front Distributionで公開し、そのURLをApacheのmod_proxyで設定しようとしたときにこのエラーが出た。

ProxyPassで指定できるURLの長さには制限があり、長いURLは設定できない。

mod_proxyの代わりにmod_rewriteでリバースプロキシを設定する

長いURLはmod_proxyでは設定できないので代わりにmod_rewriteを使って設定する。

RewriteEngine On
RewriteRule ^/something/(.*) https://...長いURL.../$1 [P,L]

[P]オプションをつけるとリバースプロキシとして動作する。
[L]オプションはこのルールがマッチしたら以降のルールを無視する。

httpsで設定する場合の注意点

httpsの設定をしている場合はVirtualHostディレクティブで囲っているはず。
この場合はそのVirtualHostディレクティブ内で設定する必要がある。

<VirtualHost _default_:443>
(省略)

RewriteEngine On
RewriteRule ^/something/(.*) https://...長いURL.../$1 [P,L]
</VirtualHost>