intra-martをnginxで建てる必要が発生したのでとりあえず構築メモ。
intra-martさんのマニュアルを見ると、サポートしているwebサーバはIISとApacheだけみたい。
- intra-mart Accel Platform セットアップガイド(Apache HTTP Server)
- intra-mart Accel Platform セットアップガイド(Internet Information Services(IIS)
設定を見た感じ、多分以下のようなことをやっている(と思う)
- %2F(スラッシュ)をデコードせず渡すように
- 画像ファイルやテキストファイルをwebサーバーで処理
- ただし、URLが/imart/reverse_proxy/, /imart/kibana/配下のものに関しては、webサーバーで処理しない
- 上記以外はアプリケーションサーバーで処理
- その際にタイムアウトを1200秒に設定
- リダイレクト時にも書き換え(ProxyPassReverse)
- アクセスログのためにX-Forwarded-Forを設定
- webサーバーとアプリケーションサーバー間でKeep-aliveをオフ
というわけで、頑張ってnginxの設定を書いてみた。
nginx.conf
server {
listen 80;
server_name localhost;
location ~* ^/imart/(?!reverse_proxy/)(?!kibana/)(.*\.gif|.*\.png|.*\.jpg|.*\.css|.*\.js|.*\.swf|.*\.ico|.*\.json|.*\.jar|.*\.xml|.*\.yaml|.*\.txt|.*\.html|.*\.htm)$ {
}
location /imart {
proxy_read_timeout 1200s;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.1.1:8080/imart;
client_max_body_size 64m;
}
}
とは言っても大した事はやっていない。
多分、locationとかは一個で書いたり(その分正規表現がややこしくなる)もしくはもっと分けて書いたり(正規表現は分かりやすくなる)とかはできると思うけど、とりあえずこんな感じで書いてみた。
ファイルアップロードは64MBまでできるようにしてみた。
Keep-aliveは何も設定しなくてもcloseになる模様。
ちょろっと動確してみた感じ、上の箇条書き部分は動いていそう。
ここまで書いて以下の記事を発見!
IMBoxの各ユーザのアイコンが出なくなってしまったので、深追いはやめました。
試した感じ、この設定でユーザのアイコンは表示されているみたい。もしかして違う所かな、それとも何か見落としているかな。
とりあえず、Cometも動いてるっぽいのでこの記事でも深追いせずこれで良しとする。
まぁ当面はなんとなくでも動けばいいのでとりあえずはこれで!