nginx経由でダイレクトアドレスでtomcatに接続する方法
久々にIT関連の記事を書きます。
最近、サーバー側の勉強を再開しました。
環境としてはVagrantでcentOSをたてて、nginxとtomcatの導入をしています。
VagrantやVirtualBoxの導入についてはまたの機会にするとして、今回はnginxからtomcatに接続するあたりの話です。
また、Vagrantの状況として、2つのcentOSを立ち上げています。
Vagrantfileはこんな感じです。
VAGRANTFILE_API_VERSION = “2”
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = “centos65”config.vm.define :test1 do | test1 |
test1.vm.hostname = “test1”
test1.vm.network :private_network, ip: “192.168.33.10”
endconfig.vm.define :test2 do | test2 |
test2.vm.hostname = “test2”
test2.vm.network :private_network, ip: “192.168.33.20”
endconfig.vm.provider :virtualbox do |vb|
vb.customize [“modifyvm”, :id, “–memory”, “1024”]
vb.customize [“modifyvm”, :id, “–cpus”, 1]
end
end
このように記述することで同じ環境のvmを立ち上げることができます。
それでは本題に入ります。
今回はまったのはこのVagrantfileにforwarded_portを記述していたことと、nginx.confにproxy_redirectの流れを知らずに使ってしまっていたことです。
まず、forwarded_portですが、これはhostとguestの間にportをあける作業になります。
空いてるportの確認は
netstat -nat | grep LISTEN
のコマンドを叩けば確認できます。
このforwarded_portでnginxに8888portで接続し、tomcatのportを8081に設定してnginxとtomcatを繋げていました。
その結果、http://127.0.0.1:8888でtomcatを確認することができました。
この8888を削除するためにいろいろやってみたのですができませんでした。
まずforwarded_portをhostとguestともに80portであけてみました。
がうまくいかず…
nginx.confのproxy_redirectにhttp://127.0.0.1:80をしてみてもうまくいかず…
先輩に相談したところ、そもそもforwarded_portの設定はいらないということでした。
なぜか!?
Vagrantfileでtest1のcentOSでは新しいnetworkとしてipを作っています。
そこにnginxが立てられるので、そこにアクセスすればnginxに接続できます。
またtomcatとnginxを繋げているのでtomcatに接続することができます。
なるほど…
forwarded_portであけてしまうと8888に飛ぶ仕様なので、必ずportが必要になっていたんですね。
ただ、80を設定しても無理だったのがよくわかりません。
というのもguest側のportは開いたのに、host側のportが開きませんでした。
謎…
そしてもう一つの原因のproxy_redirectについてです。
これは特に気にすることはないんですが、tomcatのROOTディレクトリー下に新しくディレクトリーを作成し、index.htmlをおいてデプロイしてみました。
その時の環境としてredirectにhttp://127.0.0.1:80を指定していました。
するとなぜかportが8081で返ってきました。
なぜかというと、tomcat経由でredirectするとtomcatのLocation下にあるHEAD情報を取ってくるからみたいです。
今回の場合はport80を指定していたので、そもそものtomcatの8081が返されることになりました…
一つ一つのコードの流れをしっかり理解せずに書くのは危険ですね…>< 結果として、今は自分が指定したipに接続したらportなしでtomcatに接続可能であり、デプロイしたディレクトリーにも直接アクセス可能になりました。 今回でいうとhttp://192.168.33.10/ですね。 一安心... [補足] centOSでnginxの起動
sudo service nginx start
nginx.confの設定
sudo vim /etc/nginx/nginc.conf
centOSでtomcatの起動
sudo /usr/local/tomcat/bin/startup.sh
centOSでtomcatの停止
sudo /usr/local/tomcat/bin/shutdown.sh
centOSでtomcatのserver設定
sudo vim /usr/local/tomcat/conf/server.xml
ipアドレスの確認
ifconfig