Nginxにきた特定のパスをAPサーバーに転送する
Nginxがポート80で受けているときに背後にTomcatなどAPサーバを立てたい時があると思います。
例えば8080ポートの場合は全部Tomcatが処理するみたいな。そういう場合です。一般的にはリバースプロキシというらしいです。
前提として/etc/nginx/nginx.confで inlucdeで以下が記載されているものとします。(インストールでデフォルトで設定されていると思います)
/etc/nginx/nginx.conf
http {
... 省略
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*; <---- ここに設定を追加していきます
}
実際に /etc/nginx/sites-enabled/ に転送設定を追加します。以下、例です。
この例ではhogeファイルでhoge.arcanum.jpにきたリクエストを同一サーバ内の8080にあるhoge Webアプリに転送します。
/etc/nginx/sites-enabled/hoge
server {
listen 80;
listen [::]:80;
server_name hoge.arcanum.jp;
location / {
rewrite ^/(.+) $1 break;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://127.0.0.1:8080/hoge/$1$is_args$args;
}
}別のサブドメイン(例:fuga.arcanum.jp)を追加する場合は同様に新規にfugaファイルなどを作成し上記のような設定を記載すればいいです。