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>
\第一線のプログラマーの行動原理を学べる!/