14
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

1分で実現できる有用な技術Advent Calendar 2015

Day 24

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

Posted at

インストール方法

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 はリバースプロキシとかのルーティングの設定をコマンドラインだけでフレキシブルに書けるのが便利そうです。

14
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?