arcanum_jp’s blog

おっさんの日記

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ファイルなどを作成し上記のような設定を記載すればいいです。