先日、KiwiIRC のインストールと設定 を行ないました。しかし、KiwiIRCは自分自身がHTTPサーバとしても動作するため、同じコンピュータ内に別のHTTPサーバ(Apacheやnginxなど)を立ち上げ、コンテンツを公開している場合は、HTTP標準のポート80番を使用することができません。

毎回ポートを指定してアクセスするのも面倒ですし、なにより下手なポートを指定すると Google Chrome が勝手にアクセスを遮断してしまいます。それでは使いづらく、大勢に使ってもらうのも大変です。

そこで今回は、nginxのリバースプロキシ機能を使って、ポート80でKiwiIRCにアクセスできるようにします。 ただし、nginxの基本的は設定は省略します。ここに書くよりほかにもっといいサイトさんがあるからです。

この記事を書くにあたって使用したプログラムのバージョンです。

  • nginx 1.6.2 (EPELからインストール)
  • KiwiIRC 0.9.1

また前提として、KiwiIRC/nginxは同一のコンピュータで稼働していることとします。

下準備

この記事では、新たにサブドメイン(webirc.cre.jp)を作成して、サブドメインの直下がKiwiIRCであるかのようにふるまわせます。なのでまず最初に、nginxをマルチドメイン化しました。
個人的な意見ですが、どうせマルチドメイン化するなら、サブドメインごとに設定ファイルを独立させられるようにすると、後々メンテナンスしやすくなるのでお勧めです。

KiwiIRCを、先日の記事のようにインストール・設定し、まずは適当な(80以外の)ポートでアクセスできる・IRCでチャットできることを確認しました。今回は8667番ポートにしました。

設定

KiwiIRC の公式サイトで示されているドキュメントの通りに、nginxの設定ファイルを記述します。

proxy_passと書かれている行で、KiwiIRCのポート番号を指定してください。デフォルトでは7778番らしいですが、先述の通り今回のポート番号は8667番です。

KiwiIRCの方は、デフォルトの設定から変更する必要はありませんでした。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo systemctl restart nginx

いきなり再起動する前に、きちんと設定ファイルの書式チェックをしましょう。

動作確認

ポート番号を指定せずに、KiwiIRCの画面が出れば、設定は完了です。もしみられなかったら、何か設定にエラーがあるはずです。

リバースプロキシの確認ができれば、もうKiwiIRCに直接つながるポートは、外部に対して閉じてしまっても問題ありません。

おまけ:チャンネル指定ができるようにする

KiwiIRC本体は、例えば次のようなURLでアクセスすると、入室するチャンネルの初期設定を上書きすることが(以下の例だと#creに)できます。

http://webirc.cre.jp:8667/?channel=#cre

リバースプロキシを挟んでもCGIのGETによるチャンネル指定はできますが、どうせならディレクトリにアクセスするかのようなURLにしたいですよね?

http://webirc.cre.jp/channel/cre

というわけで設定します。書き加えるのは1行だけです。

rewrite ^/channel/(.*)$ /?channel=\#$1;

これを、nginx 設定ファイル中にある location の中に記述します。