RedminePM(iOS/Android)が、AndroidだけRedmineにログインできない件

ツール

自前でRedmine環境を持っていて、RedminePM(スマホ向けのRedmineクライアント)でつなごうと思ったところ…。SERVER ERROR(302) …と表示され繋がりませんでした…。困ったなぁと思って、他の人にも接続を確認したところ…

Gさん「iPhoneで接続できました」
naou
「WHY?! (´・ω・`)」

現時点で最新版のRedmine(3.4.6.stable)を使用しているので、対応していないかな?とも疑いましたが、リクエストを返したアクションは、GitHub上で確認すると、6年前から変更がない…ということでアプリが非対応、というわけではなさそう…。

うーん…SSLの証明書の問題?も疑いましたが、ログインアクションまでたどり着いているのでそれはなさそう…。

仕方なくログを眺めていると


redirect to     h  t  t  p  :  //
….

…おまえかー。
うちのRedmine環境は、Let’s Encrypt で証明書を発行していて、nginx で一旦リクエスト(HTTPS)を受けて、それを Redmineにリバースプロキシ(HTTP) しています。ここがうまく言ってなかったんですね…。
一旦クライアントには、http://… へのリダイレクトが返され、http://… にアクセスすると、https://… へリダイレクトされると…。
iPhoneのHTTPモジュールはそういう多段階のリダイレクトを処理できたけど、AndroidのHTTPモジュールは、2段階目のリダイレクトを勝手には処理してくれなかった、というところですかね。

となれば、解決はよく知られた方法…proxy_pass と一緒に

proxy_set_header    X-Forwarded-For    $proxy_add_x_forwarded_for;

と書いてあげれば、めでたく解決しました。
Redmine自体のプロトコルの設定はちゃんとHTTPSになっていたのですが、REST機能を使う際は、その設定は効かないみたいですね。

コメント

タイトルとURLをコピーしました