7C00.ME/houmu 2013-06-09

Nginx做内网反向代理

内网(10.3.97.xx)一个小集群网络(192.168.16.xx),对外只有一个节点(主节点)的可访问ip(10.3.97.52)。集群内节点提供了Web服务,可查看节点的状态信息。为了能够访问这些Web服务,同时不改动原有的拓扑,就在主节点假设一台nginx作为反向代理,安装配置过程如下。

install nginx

在Ubuntu Server 10.04上需要安装pcre。在有些安装中还需要openssl、zlib,在我的安装中没有需要,可能是之前安装其他软件包顺带装上了。

wget http://sourceforge.net/projects/pcre/files/pcre/8.33/pcre-8.33.tar.bz2
tar xjvf pcre-8.33.tar.bz2

wget http://nginx.org/download/nginx-1.4.1.tar.gz
tar xzvf nginx-1.4.1.tar.gz
cd nginx-1.4.1
./configure --prefix=$HOME/nginx/nginx-1.4.1 \
    --with-http_stub_status_module \
    --with-http_ssl_module \
    --with-pcre=../pcre-8.33
make
make install

指定prefix,把ngnix安装在特定目录,便于管理,尤其是卸载的时候。

edit nginx/conf/nginx.conf

增加下面的内容

map $hostid $hostip {
    default 1;
    00  1;
    01  2;
    02  3;
    # 省略
}

server {
    listen       8081;
    server_name  ~^node-(\d\d).domain.com$;

    set $hostid $1;
    set $ip $hostip;

    location / {
        # proxy_pass "http://192.168.16.$ip:18081/";
        proxy_pass http://192.168.16.$ip:18081
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwared-For $proxy_add_x_forwarded_for;
    }
}

NOTE

start

edit hosts

在客户端的hosts文件加上下面的内容。

10.3.97.52  node-00.domain.com
10.3.97.52  node-01.domain.com
10.3.97.52  node-02.domain.com
# 省略