前提・実現したいこと
Springboot + ThymeleafでWebアプリケーションを実行したいがリソースの読み込みとサーブレットパスのマッピングがうまくできない
発生している問題・エラーメッセージ
Spring bootアプリケーションをサーバー上に公開したのですが
例えば現在のサーバ側の設定(/etc/httpd/conf.d/testserver.conf)が
<Location /app> ProxyPass http://localhost:8888/ ProxyPassReverse http://localhost:8888/ </Location> ProxyPass /app http://localhost:8888/ ProxyPassReverse /app http://localhost:8888/
・サーバー側の設定(リバースプロキシの設定)で/appでアプリケーションが動作する
という状態だとします。
ログイン画面を表示するアプリケーションは
https://testserver.jp/app/login ```で動作するようになっています。 そのためリソースファイルも
https://testserver.jp/app/images/test.png
に保持されているのですが Springboot側ではコンテキストパスの設定変更などを行っていないため
https://testserver.jp/images/test.png
を読み込みに行ってエラーとなっているようです。 サーブレットパスについても同じで、ログインボタンを押した際の遷移先に
@{/auth}
を設定しているのですが
となってしまいうまく遷移できません。 ### 試したこと Springbootのapprication.propertiesにコンテキストパスの設定を行いました。
server.servlet.context-path=/app
すると、リソースファイルは
https://testserver.jp/app/images/test.png
に配置されるようにはなったのですが、今度はログイン画面を表示するパスが ホスト(https://testserver.jp) + サーバー側の設定(/app) + コンテキストパスの設定(/app)で
https://testserver.jp/app/app/login
となってしまい、結局アプリケーションが動いているところと各リソースのある場所がマッチしていないという状態になっています。 サーブレットパスのマッピングも同様で
@GetMapping("/login")
public String hello(Model model) {
return "login";
}
としているため
https://testserver.jp/app/login
を見に行ってしまい、うまく動作しないという状態になっています。 どうすれば解決するでしょうか? Springboot側をいじればいいのかサーバー側の設定を変えれば何とかなるのかなどもわからない状態です。 どなたか教えていただければと思います。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/19 10:47
2020/08/19 12:06
2020/08/20 06:59