nginxとtomcatの連携（amazonlinux2)

# はじめに
本記事はnginx、JDK、tomcatの連携方法をまとめた記事になります。
nginxは`amazon-linux-extras`で、JDKとtomcatは`yum`でインストールしたときの設定の仕方をまとめておきます。

### バージョン
nginx 1.20.0
JDK 1.8.0_332
tomcat 7.0.76

# 構築
今回はルートユーザーで設定を進めていきます。
```
$ sudo su -
```
## JDKのインストール
amazon-linux-extrasをenabledにします。
```
# amazon-linux-extras enable corretto8
```
JDKをインストールしていきます。
```
# yum install java-1.8.0-amazon-corretto java-1.8.0-amazon-corretto-devel
```
バージョンの確認ができればインストールの完了です。
```
# java -version
openjdk version "1.8.0_332"
OpenJDK Runtime Environment Corretto-8.332.08.1 (build 1.8.0_332-b08)
OpenJDK 64-Bit Server VM Corretto-8.332.08.1 (build 25.332-b08, mixed mode)
```
## tomcatの設定
インストールしていきます。
```
# yum install tomcat tomcat-webapps tomcat-admin-webapps
```
tomcatを起動し、自動起動の設定をしておきます。
```
# systemctl start tomcat
# systemctl enable tomcat
```
ブラウザから`http://パブリックIP:8080`にアクセスしてtomcatのテストページが表示されれば成功です。
![スクリーンショット 2022-07-11 152905.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2724001/c93a420a-c97f-912f-8bba-2c91a38aa4d4.png)
もし表示されなかった場合は、AWSコンソールからセキュリティグループ設定で8080番ポートが開いているか確認してみてください。

## nginxの設定
nginxをインストールしていきます。
```
# amazon-linux-extras install nginx1
```
nginxを起動し、自動起動も設定しておきます。
```
# systemctl start nginx
# systemctl enable nginx
```
`http://パブリックIP`に接続してnginxのテストページが確認できればOKです。
![スクリーンショット 2022-07-11 151407.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2724001/dd3cef19-3028-9bd3-1bec-a9040049a5cb.png)

もし表示されなかった場合は、AWSコンソールからセキュリティグループ設定で80番ポートが開いているか確認してみてください

ここまで確認出来たら、tomcatとnginxを連携していきます。

### 設定ファイルの編集
nginxの設定ファイル`/etc/nginx/nginx.conf`を編集していきます。
ポート80番にきた接続を8080番に流すプロキシの設定を記載していきます。
```
# vi /etc/nginx/nginx.conf
```
```conf:変更前
     ～～～前略～～～
    server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }
　　　～～～後略～～～
```
```conf:変更後
     ～～～前略～～～
    server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

　　　　# 下の３行を追記
        location / {
        proxy_pass http://グローバルIPアドレス:8080/;
        }

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }
　　　～～～後略～～～
```
設定が完了したらnginxを再起動します。
```
# systemctl restart nginx
```
`http://パブリックIP`に接続して今度はtomcatのテストページが表示できるようになれば連携完了です。
![スクリーンショット 2022-07-11 152905.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2724001/78ab9d1b-0777-a1fe-b827-a567003beda8.png)

# 所感
今回の構築にあたり、tomcatのインストールファイルが足りず、少し時間がかかってしまいました。不足なくインストールすることは気を付けていきたいです。
また、nginxをyumでインストールしたり、tomcatを圧縮ファイルからダウンロードしたり、方法は他にもありますが、amazonlinux2の場合は（バージョンにこだわらなければ）今回の方法がもっともシンプルかなと思います。

# 参考サイト
[knowledgeにはnginxがお手軽か？](https://www.bnote.net/centos/knowledge_websocket.html)
[NginxとTomcatでリバースプロキシ連携](https://ti-tomo-knowledge.hatenablog.com/entry/2018/07/30/193923)