普通の人はグローバルIPを1個しか持っていないので、ブロードバンドルータで1:1 NATをすると外部に公開できるWebサーバはひとつになる。普通はそれでいいが、ローカルLAN上の別の機器にもHTTPでアクセスしたい場合もある。ネットワークカメラとかインターネット家電とか。また静的なHTMLとCGIを別のサーバに分けたいこともあるだろう。
ネットワーク屋的にはL7スイッチを入れたりしたくなるが、もっと簡単にWebサーバのApacheでリバースプロキシ設定をすれば実現できる。
/etc/httpd/conf/httpd.confに以下の設定を追加する。
ProxyRequests Off
Order deny,allow
Deny from all
Allow from 123.123.123.0/24
ProxyPass /nwcamera http://192.168.0.1/
ProxyPassReverse /nwcamera http://192.168.0.1/
ProxyPass /intraserver http://192.168.0.2/
ProxyPassReverse /intraserver http://192.168.0.2/
そしてservice httpd configtest、service httpd reloadをする。
そうすると外部から/bbrouterなどにアクセスしたときに、Apacheがリバースプロキシとして動作して192.168.0.1のページが見られる。
ただし内部のサーバページに絶対パスのリンクがある場合、そのリンク先はProxy対象とならない。結果として元のWebサーバ上でそんなファイルはないと怒られる。これはちょっと厄介で、ちゃんと解決するには本格的なProxyソフトを入れないと駄目だと思う。