nginxでリバースプロキシ

自社サービスでリバースプロキシを使って複数サーバの振り分けを行ってますが、新規にホスティングする企業さんがSSLを使いたいということで。設定変更。ついでにメモです。
非常にシンプルで簡単。nginx超便利♪


デフォルト設定(ネームベースでの管理なので、管理外はすべてエラーにする)

server {
listen 80 default_server;
server_name _;
return 444;
}
server {
listen 443 default_server;
server_name _;
return 444;

ssl on;
ssl_certificate /etc/nginx/ssl/default.crt;
ssl_certificate_key /etc/nginx/ssl/default.key;
keepalive_timeout 70;
}


SSL有効ホスト(SSLもNonSSLも同じコンテンツを表示する)
すべて192.168.1.10に転送

server {
listen 80;
listen 443 ssl;
server_name host1.domain.com host1.domain.jp;
ssl on;
ssl_certificate /etc/nginx/ssl/host1.crt;
ssl_certificate_key /etc/nginx/ssl/host1.key;
keepalive_timeout 70;

charset UTF-8;

error_page 404 /404.html;
error_page 400 401 403 500 501 502 503 504 /50x.html;
location ~ ^/(404|50x).html$ {
root /opt/gns/web/errors;
}

location / {
rewrite /(.+) $1 break;
proxy_pass http://192.168.1.10//$1$is_args$args;
}
}


一つのドメインURIでサーバを振り分ける
すべて192.168.1.10に転送

server {
listen 80;
server_name host-2.domain.com;

charset UTF-8;

error_page 404 /404.html;
error_page 400 401 403 500 501 502 503 504 /50x.html;
location ~ ^/(404|50x).html$ {
root /var/www/html/errors;
}

location /server101/ {
rewrite /portal/(.+) $1 break;
proxy_pass http://192.168.1.101/$1$is_args$args;
}

location /server102/ {
rewrite ^/(.+) $1 break;
proxy_pass http://192.168.1.102/$1$is_args$args;
}