end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転しました

冗長構成のWEBサーバの片系を切り離した状態でのメンテナンス

リーバイス・プロキシ構成は、よく利用しますが、通常?のプロキシは初めて構築したかも。
しかも、今回は nginxですしね。

概要


proxyとして、動作させる nginxの設定ファイル

daemon off;
worker_processes  1;
error_log  /dev/stdout error;

events {
       worker_connections  1024;
}

http {
    log_format proxylog '$remote_addr [$time_local] $server_name:$server_port -> $upstream_addr "$request" $status';
    access_log /dev/stdout proxylog;

    ssl_certificate      /home/endo/local/sslproxy/server.crt;
    ssl_certificate_key  /home/endo/local/sslproxy/server.key;
    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    #### HTTP GET https://sample.example.com/sso/UI/Login?realm=/sso

    server {
        listen 443 ssl;
        server_name sample.example.com;

        # 動的コンテンツ(tomcat)
        location / {
          proxy_set_header        Host sample.example.com;
          proxy_set_header        X-Real-IP $remote_addr;
          proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header        X-Forwarded-Proto $scheme;
          proxy_read_timeout      90;

          proxy_pass      http://10.82.XXX.YYY:28080;
          proxy_redirect  http://10.82.XXX.YYY   https://sample.example.com;
        }

        # 静的コンテンツ(nginx)
        location ~ ^/(css|js|images|header.html|footer.html|logout|login|.*\.html|subblocks) {
        proxy_set_header        Host sample.example.com;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;
        proxy_read_timeout      90;

        proxy_pass      http://10.82.XXX.YYY:8080;
        proxy_redirect  http://10.82.XXX.YYY   https://sample.example.com;
        }

    }
}

proxyとして、動作させる nginxの起動

$ /home/endo/local/nginx19/sbin/nginx  \
     -c /home/endo/local/nginx19/conf/nginx_ssl_proxy.conf

あとは、ブラウザでアクセス

https://sample.example.com/path/to/app

c:/Windows/System32/drivers/etc/hosts の編集もお忘れなく

sample.example.com = nginxが起動しているip を登録して下さい