2015年12月20日日曜日

Chinachuを/じゃなくてサブディレクトリの下で公開したかった

DTV AdventCalender 19日目の記事です

2016/04/09ページ末尾に追記

私事なのだけども,ChinachuにNginxをかまして運用している.
また,いろいろあってドメインのルートではなくディレクトリの下で動かしたかった.

そのためにやったいくつかのメモです.

まず,Nginxの設定.一部抜粋.

httpsで公開している.
locationのところでChinachuを公開するようにして,別のホストのサーバーに
プロキシしている.
proxy_set_headerでUpgradeとConnectionを設定してるのはWebSocketのため.
それとこれだと認証がないので,実際の運用ではNginxで認証かけてます.

最初はNginxのdigest認証モジュールを使おうとおもったのだけど,
http://tokcs.com/archives/1810
にあるように規格違反なバグが存在している.
他にもalgorithm=MD5とすべきを"MD5"としていたり,RFCに記述されてるEBNFをちゃんと読み取れてない事に起因するバグを複数みつけてしまい,VLCのdigest認証が予想以上に厳格だったのでつらくなった.

AURにdigestモジュールのNginxがなかったこともあって,
先のURLにあったパッチと手元で作ったパッチを適用するAURパッケージを作っておいた
https://aur.archlinux.org/packages/nginx-http-auth-digest/
が,Chromeなどでは使えるが未だにVLCに認証エラーで弾かれるのでまだバグがあるのだと思う.だれかNginxでdigest認証プラグインを運用してる人,教えてください.

次にChinachuの改変.
Chinachuはべつに特に設定する事なくちゃんと動いてくれるのだが,
Chinachuから動画を見ようとするとChinachuのAPIが返すjsonのパスがChinachuがルートで動いてる前提になっていて見れなかったりする.
次のパッチで解決.

以上で,Chinachuをドメインのサブディレクトリ以下で公開する事ができた.
まああんまりこういうことしてる人っていないと思うので,誰の役に立つかはわからないが,メモでした.

追記:
2015年11月のコミットで既に対応していたのに気がつきませんでした……

commit 5de01b3dfbe79ed33109b24bf91e2d8c985d69c4
author: takaakis62 <takaakis62@users.noreply.github.com>

WUI/Client: リバースプロキシ使用時に再生できない問題を修正

とのことでした.
アップデートは頻繁にやりましょう……