14
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

Organization

パツイチでHTTPサーバになったりリバースプロキシになったりする devd

インストール方法

Go言語製なので下記からダウンロードしたアーカイブの中身のバイナリをパスの通ったところに置くだけです。

go get でもビルド&インストールできます。

go get github.com/cortesi/devd/cmd/devd

簡単な使い方

カレントディレクトリを静的ファイルとして返す Web サーバを起動。

devd .

-o でブラウザを自動起動する。

devd -o .

-l でライブリロードが有効になる。

devd -ol .

-w で監視するディレクトリを指定してライブリロードする(-l との違いが良くわからない? ディレクトリが指定できるかどうかだけでは無さそうだけど?)。

devd -ow src/ .

リバースプロキシにする。

devd -o http://localhost:8888

リバースプロキシでかつライブリロードもする(-l だとライブリロードが効かなかった)。

devd -ow src/ http://localhost:8888

-s をつければ https になる。

devd -os http://localhost:8888

ルートの書き方

↑でプロキシを指定した部分にはルーティングを書くことができます。

ルーティングには下記のようなルートを複数指定できます。root はリクエストされたURLで、endpoint は解決されるリソースというかエンドポイントというか実体です。

root=endpoint

root には、/favicon.ico のような特定のファイル名か、/images/ のようなディレクトリ(終端に / が必要)を指定することが出来ます。

endpoint にはファイルシステム上のパスや URL を指定できます。

例えば、次のルートだと /assets/ へのリクエストはカレントディレクトリの static/ にマップされます。

devd /assets/=./static/

root が / から始まらない場合、最初の / まではサブドメインになります。例えば、次のルートだと http://subdomain.devd.io/images/ がカレントディレクトリの images/ にマッピングされます。

devd subdomain/images/=images/

endpoint に URL を指定するとリバースプロキシになります。

例えば、次のルートだと http://app.devd.io へのリクエストが http://localhost:8888 へマッピングされます。

devd app/=http://localhost:8888

root が省略された場合 / になります。つまり、すべてのリクエストにマッチします。なので、下記の例だとすべてのリクエストがカレントディレクトリの ./static にマップされます。

devd ./static

また、同様に下記もすべてのリクエストが http://localhost:8888 に転送されます。

devd http://localhost:8888

次のように複数を組み合わせて指定できます。

devd /=http://localhost:8888 \
  /assets/=./static \
  api=http://localhost:9999

リバースプロキシについて

リバースプロキシは上流の SSL 証明書を検証しません。

上流には転送先の Host ヘッダが渡されます(devd.io とかではなく)。元の Host ヘッダ(devd.io とか)は X-Forwarded-Host ヘッダで上流に渡されます。

Windows での問題?

Windows で監視ディレクトリを . にするとエラーになりました。

$ devd -ol .
devd: error: Could not watch routes for livereload: The filename, directory name, or volume label syntax is incorrect.

cortesi/devd #25によると Windows 10 では発生しないらしいですけど。

次のように .\ と指定すればとりあえず大丈夫でした。

$ devd -ol .\
20:54:42: Listening on http://devd.io (127.0.0.1:80)
20:54:43: GET /
  <- 200 OK 4.3kB

さいごに

似たようなツールはいろいろあると思います。わたしは browser-sync をよく使っていました。が、devd はリバースプロキシとかのルーティングの設定をコマンドラインだけでフレキシブルに書けるのが便利そうです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
14
Help us understand the problem. What are the problem?