关于反向代理服务器,大家应该都有耳闻,形象地说就是增设的”前台”,所有访问都通过这个前台,不能直接访问内部服务器,从而实现了隐藏. 通过反向代理可以实现重定向、负载均衡等.

1. 安装 pcre

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.gz
tar xzvf pcre-8.41.tar.gz
cd pcre-8.41
./configure
make
make install

PS:debain 系可以直接安装 libpcre3-dev;如提示确实c++编译器,yum install -y gcc-c++

2. 安装 nginx

wget http://nginx.org/download/nginx-1.13.4.tar.gz
tar xzvf nginx-1.13.4.tar.gz
cd nginx-1.13.4
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make
make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin

3. 运行nginx

nginx

若遇到找不到 pcre 动态库,则将/usr/local/lib加入系统动态库

echo '/usr/local/lib' >> /etc/ld.so.conf.d/local.conf

若遇到”nginx: [emerg] getpwnam(“nginx”) failed”,则进行第4步

4. 添加用户组

groupadd nginx
useradd -g nginx nginx

5. 配置反向代理

vim /usr/local/nginx/conf/nginx.conf

user nginx nginx;
error_log  logs/error.log;
pid        logs/nginx.pid;
...
http {
    ...
    server {
        server_name localhost;
        ...
        location / {
            proxy_pass http://www.baidu.com
        }
        ...
    }
}

配置完后,重新加载nginx -s reload

当我访问该代理服务器ip,则会转到www.baidu.com

6. 停止 nginx

若需要停止 nginx,则执行如下命令或ps & kill

killall nginx

7. 实例讲解

最后讲一个实用例子,一台主机www.example.com有三个服务,分别对应三个端口(80, 81, 82),我可以申请3个域名,分别对应这三个服务,配置如下:

test.example.com -> 代理服务器IP test1.example.com -> 代理服务器IP test2.example.com -> 代理服务器IP

    ...
    server {
        server_name test.example.com;
        ...
        location / {
            proxy_pass http://www.example.com:80;
        }
        ...
    }
    server {
        server_name test1.example.com;
        ...
        location / {
            proxy_pass http://www.example.com:81;
        }
        ...
    }
    server {
        server_name test2.example.com;
        ...
        location / {
            proxy_pass http://www.example.com:82;
        }
        ...
    }

这样我就可以不用为每个服务购买一台主机