[dd-wrt]ルータでwebサーバ(3)
dd-wrt環境下では工夫次第で以下のようなことができます。
ここで示した[httpd2]をルータ内に別途インストールして、ポート8080(任意)で待ち受けて、ポート80へのリクエストを8080に向けます。
ポート80を担当している[httpd1]は一般的なルータと同じように管理画面用なので、外からは見せないようになってます。
[httpd2]をインストールできるのがdd-wrtの特殊性であり、わたしのようなニーズを満たすすばらしい機能です。
こちらでご覧いただけるように、よく使われるapacheとnginxがパッケージマネージャーからインストール可能になってます。
どちらかを使ったことがある方なら覚えておられるかもですけど、apacheにもnginxにも待ち受けるポートを指定することができます。
apacheの場合 httpd.conf
Listen 8080
nginxの場合 ***.conf(個々の設定ファイル)
server {
listen 8080;
... }
ずいぶんもったいぶってひっぱりましたが、結論からいうと、dd-wrt化したルータでhttpdをインストール、ポートを80からどこかに変更。そのどこかにポート80へのアクセスをポートフォワードすることで、ほぼ待ち受け消費電力のみの自宅webサーバが実現できます。
さて、そこで起こるもろもろの調整方法。
コンテンツ格納
公開したいモノの量によりますが、ルータ元来の内部ストレージではどうやっても収まらないでしょう。そもそもdd-wrtを導入する前提としてUSBストレージが接続されていると思いますので、コンテンツ量にみあった容量のUSBストレージを用意するといいでしょう。
php、perl、mysql、python、javascript(node.js)など
いちおうパッケージインストール可能です。ただ、CPU性能、メモリ容量はルータのものであることをお忘れなきよう。
わたしの雑なphpではメモリ不足エラーが頻発しており、込み入ったコンテンツはムリじゃないかと思われます。
LAN内のアクセス
検証などで[httpd2]にリクエストを出すときは
http://192.168.1.1:8080 といった記述になります。
ここまでをまとめるとこんなかんじです。
いったん、ここでdd-wrtのすばらしい機能のご紹介は終わりますが、ルータ内にwebサーバを建てるだけがdd-wrtのメリットではありません。パッケージ導入できるモノは多く、ソースからのビルドも可能なようなのでほしい機能をさらに追加することもできます。
ぱっと見たところ、USBストレージを使ってSAMBAでNAS化や、DLNAサーバ化。ほかにもOpenVPNサーバ化、Squidプロクシサーバ化などが可能です。