リバースプロキシ(以下リバプロ)ってありますよね。
つまり、
https://reverse.example.com/imart
のようなURLを踏むと、リバプロの設定に従って
のようなリクエストを代理で出し、その結果をクライアントに返してくれる仕組みです。しかしこれ(リバプロ)があるとページが表示できないことがあります。
これは、BaseURLが正しく設定されていない為と考えられます。
このような構成の時、挙動としては、
・ログインフォームが表示されるがレイアウトが崩れている。
・ログインボタンを押下しても、ログインできない
といった挙動を示すことがあります。
何が起きているか
→htmlのソースを見てみると、https://192.168.11.100のようなURLが書かれています。
(BaseURL)
ユーザはhttps://reverse.example.com/imartというURLでアクセスしているのに、html上にログイン先として書かれているのはAPサーバのIPアドレスになっています。
→CSSやjavascriptのファイルが読み込めないのでレイアウトなども崩れてしまいます。
原因のポイント:APサーバからするとクライアントの元々のリクエストは知らぬ
APサーバからすると、クライアントが出したリクエストは感知していません。
わかるのは「リバプロ」の出したリクエストしかのみです。
→https://192.168.11.100/imartでアクセスされているので、
当然ログイン先のURLも https://192.168.11.100/imart/ナントカカントカだろう
ということになります。
修正のポイント:クライアントがアクセスしてくるURLを設定すればいい
APサーバに対してはリバプロがアクセスしており、直接のURLは
https://192.168.11.100/imartでアクセスされているが、クライアントは
https://reverse.example.com/imartでアクセスしている。
→BaseURLをhttps://reverse.example.com/imartに設定することで
ログイン先のURLも https://reverse.example.com//imart/ナントカカントカだろう
ということになります 。
そんなに簡単じゃない
BaseURLなら知っている知っている、server-context-config.xmlの中に設定するところがあって、これが「https://192.168.11.100/imart」になっているか、定義されていなかった直せばいいだ。
5.3.2.2. ベースURL — intra-mart Accel Platform セットアップガイド 第26版 2018-12-01
:
:
:
アクセス経路が1つなら解決ですが、2つ以上あるならばそう簡単じゃありません。
ここで躓くことになります。
つづく