Apacheのproxy_modを使って内部NWの端末を公開する

ここのサイトのインコはRaspberryPi ZeroにMJPG-streamerを入れて配信しています。

今までは、静的IPマスカレードを用いてポート開放で公開していたのですが、ちょっと変わったことがしたくなりました。

ストリーミング配信もSSL/TLSに対応させたくなったので、様々な手法を検討した結果、Webサーバーがラズパイまで映像を取りに行くという方法が美しかったので、”proxy_mod”を使ってWebサーバーにやらせます。そうすると必然的にSSL/TLSに対応します。

方法

前提として、ネットワークの構成は殆ど図のような構成です。

NW構成図

今まではルーター側でラズパイのIPアドレスとポートを開放していたのですが、WebサーバーのあるDMZ以外は全て閉じました。外部ネットワークからラズパイのコンテンツを楽しむにはDMZにあるWebサーバーが代理としてラズパイから動画を持ってこないといけません。

今回はapacheのバーチャルホストを用いてサブドメインで公開します。設定が以下の通りです。

ラズパイ側の配信ポートは8888番とします。

<VirtualHost *:80>
        ServerName stream.mimoex.net
        ProxyRequests Off
        ProxyPass / http://192.168.0.100:8888/
        ProxyPassReverse / http://192.168.0.100:8888/
</VirtualHost>

この内容が記述された.confファイルを /etc/httpd/conf.d/ に保存して、systemctl reload httpd します。

そうすると、stream.mimoex.net でラズパイのポートを開放しなくてもインコを見ることができます。

あとは、CertBotを用いてHTTPSにするだけで終了です。

次はproxy_modを用いて、apacheとその他443番ポートを利用するアプリケーションとの共存について記そうかと思います。