はじめに

前回Tomcatをインストールしましたが、
URLにポート指定するのはスマートじゃないので、
nginxのリバースプロキシを使ってTomcat上のアプリを実行するように変更します。

手順

  1. nginxにリバースプロキシの設定を追加
  2. SELinuxの無効化
  3. ファイアウォールの設定(GCP)


1. nginxにリバースプロキシの設定を追加

定義の追加

/ap のパスが指定された場合に、Tomcat(ポートが8080)を実行するように定義します。
(proxy_passの設定だけでも問題ないですが、今後アプリで設定が必要になりそうなものも併せて設定しています)

項目 説明 設定内容
proxy_pass 実行するURL http://localhost:8080/
proxy_cookie_path クッキーのパス指定 /ap/ //
proxy_set_header APサーバへアクセス元IPアドレス通知 X-Forwarded-For $remote_addr
/etc/nginx/nginx.conf
    server {(省略) ~

        location /ap {
            proxy_pass http://localhost:8080/;
            proxy_cookie_path /ap/ //;
            proxy_set_header X-Forwarded-For $remote_addr;
        }(省略)}


Nginxの再起動

systemctl reload nginx

f:id:sbc-web:20170502103520p:plain

※ この時点では画面を表示するとエラーになる

f:id:sbc-web:20170502103611p:plain

2. SELinuxの無効化

SELinuxが有効になっているのが原因でエラーになってしまうので、
本当は正しく設定すれば良いと思いますが、今回は簡単に対応するためSELinuxを無効にします。

現在のSELinuxのステータス確認
getenforce

有効になっています。 f:id:sbc-web:20170502180746p:plain


SELinuxを無効にする
setenforce 0

f:id:sbc-web:20170502180802p:plain


設定後の確認

SELinuxのステータスを確認

無効に変わっています f:id:sbc-web:20170502180814p:plain


ブラウザで実行

無事、表示されました f:id:sbc-web:20170502181616p:plain


3. ファイアウォールの設定(GCP)

前回Tomat用の設定をしましたが、リバースプロキシで動作するようになり不要となるので削除します。

ファイアウォールのTomcat用設定を開き、画面上部のメニューから削除を実行 f:id:sbc-web:20170502165056p:plain

確認ダイアログが出るので削除をクリック f:id:sbc-web:20170502165105p:plain


おわりに

エラー原因がわからず(結局はSELinuxの原因)、ググりながらいろいろなサイトを参考にさせて頂いたので、 今回からそういったサイトも掲載します。


参考にさせて頂いたページ

nginxとTomcatの連携 - せかいろぐ
nginx でリバースプロキシするときの Tips : あかぎメモ
RedmineをCentOS 7上で動かすーUnicornとNginx編 - ソフトウェアエンジニアリング - Torutk