Nginx で Tomcat へリクエストを繋げる設定

Tomcat と Nginxの連携

Tomcat へリクエストを繋げるには proxy_pass でURL を指定するだけでOK. ただし、ユーザがアクセスして来た IP アドレス等を Java から取得するために、Tomcat へデータを引き継ぐ設定が必要になる。

Nginx の設定例

Proxy Header で Tomcat へリクエスト内容を引き継ぐ設定をする。また、静的ファイルと Java アプリケーションを location で切り分ける。

server {
    listen       80;
    server_name  sample.yulii.net;
    access_log   logs/sample.access.log main;

    # Proxy Header
    proxy_redirect    off;
    proxy_set_header  Host                $http_host;    # Host 情報を引き継ぐ
    proxy_set_header  X-Real-IP           $remote_addr;
    proxy_set_header  X-Forwarded-Host    $http_host;
    proxy_set_header  X-Forwarded-Server  $host;
    proxy_set_header  X-Forwarded-For     $proxy_add_x_forwarded_for;
    proxy_set_header  X-Forwarded-Proto   http;
    proxy_max_temp_file_size          0;

    location / {
        rewrite   ^/$  /context  permanent;
    }

    location ~ ^/context/(img|js|css|pict)/ {
        root /var/projects/tomcat/webapps;
        expires 30d;
    }

    location /context {
        proxy_pass      http://127.0.0.1:8080;
    }
}