nginxでリバースプロキシ設定[GCE]
はじめに
前回Tomcatをインストールしましたが、
URLにポート指定するのはスマートじゃないので、
nginxのリバースプロキシを使ってTomcat上のアプリを実行するように変更します。
手順
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
※ この時点では画面を表示するとエラーになる
2. SELinuxの無効化
SELinuxが有効になっているのが原因でエラーになってしまうので、
本当は正しく設定すれば良いと思いますが、今回は簡単に対応するためSELinuxを無効にします。
現在のSELinuxのステータス確認
getenforce
有効になっています。
SELinuxを無効にする
setenforce 0
設定後の確認
SELinuxのステータスを確認
無効に変わっています
ブラウザで実行
無事、表示されました
3. ファイアウォールの設定(GCP)
前回Tomat用の設定をしましたが、リバースプロキシで動作するようになり不要となるので削除します。
ファイアウォールのTomcat用設定を開き、画面上部のメニューから削除を実行
確認ダイアログが出るので削除をクリック
おわりに
エラー原因がわからず(結局はSELinuxの原因)、ググりながらいろいろなサイトを参考にさせて頂いたので、 今回からそういったサイトも掲載します。
参考にさせて頂いたページ
nginxとTomcatの連携 - せかいろぐ
nginx でリバースプロキシするときの Tips : あかぎメモ
RedmineをCentOS 7上で動かすーUnicornとNginx編 - ソフトウェアエンジニアリング - Torutk