従来、ネットワークやミドルウェアで設定していた分野のクラウドサービスの充実に伴って、アプリサーバの構築方法も変わってきました。
AWSのapi-gateway+lambdaのような組み合わせでサーバレスにすることも可能です。
Tomcatなどもまだまだ現役ですので、今回は、Tomcatとクラウドサービスを組み合わせて作る場合のメモです。
方針
- インフラ部分は、AWSなどクラウド基盤のサービスをできるだけ使う
- 基本的に、サーバはアプリのみを使い、できるだけシンプルにする
tomcatの設定
Context
- 基本、コンテキストパスは一個にする。
server.xmlで直指定。コンテキストxmlは、複数のコンテキストを複雑に使う場合。
<Server ...> ... <Context path="/" docBase="/opt/tomcat/html/ROOT" /> <Context path="/v1" docBase="/opt/tomcat/html/v1" /> ... </Server>
web.xml
- 上記のWEB-INFに直接設置
- servlet-mappingでurlパターンとマッチさせる
- 対応するHTTPメソッドを設定する
HTTPサーバとの連携
この辺りは、できるだけクラウドインフラで行う。
- ロードバランサ
- SSL
- ディレクトリ単位のアクセス制限
- IP制限
nginx
プロキシ設定
server {
...
location / {
proxy_pass http://127.0.0.1:8080;
}
}
リバースプロキシを設定するには、SELinuxの設定変更が必要. nginx リバースプロキシ設定時の502 Bad Gatewayエラーを解消する方法
setsebool -P httpd_can_network_relay=1
他にも、ドキュメントルートの変更などSELinuxを変更する必要がある。
その他
この辺りは、httpサーバでしておいた方が安心です。
存在しないパス
- 200で独自のエラーコードを持ったJSONを返す。
- 404エラーを返す
Method Not Allowed
- 許可メソッドを指定する。
- 200で独自のエラーコードを持ったJSONを返す。
- 405エラーを返す
- nginxの444を使う。
死活監視
- 死活監視用のページを表示させる.
- example.com/check.html
0 件のコメント:
コメントを投稿