nginx配置反向代理服务器
正向代理、反向代理
1.正向代理
一般情况下,如果没有特殊的说明,我们认为的代理就是正向代理,那么什么是正向代理。如果有一个客户端A想要去访问服务器B,在他们的之间增加代理服务器C,此时正向代理就是客户端A向代理服务器C发送请求要访问服务器B里的内容,则代理服务器C代替客户端访问服务器B,然后把请求的结果返回给相应的客户端。
如下图所示:
2.反向代理
反向代理对于客户端来说丝毫感觉不到其访问的是一个代理服务器。客户端觉得就是一种正常的访问。其过程如下:客户端向反向代理的命名空间中发送访问请求,而反向代理服务器判断向具体的那个上游服务器发送请求,并将获得的内容返回给客户端。如下图所示:
*一句话进行总结:
正向代理代理的是客户
反向代理代理的是服务器
nginx如何进行反向代理
在nginx中即可以进行正向代理,也可以进行反向代理,一般情况下我们选择后者。我们需要设置一个上游服务器集群作为真正被访问服务器。在这次实验中我们采用两个httpd服务作为被代理的服务,为了显示出轮询的效果,让这两个httpd服务显示不同的内容。具体的设置如下:
(1)nginx服务器 192.168.3.245(server5.example.com)
(2)httpd上游服务器 192.168.3.244(server4.example.com)
(3)httpd上游服务器 192.168.3.246(server6.example.com)
(4)在三个节点中进行解析,解析文件为/etc/hosts
具体的配置如下所示:
1.在两个上游服务器中安装httpd服务,并且发布不同内容(为了区别轮询的效果):
*192.168.3.244(server4.example.com)和192.168.3.246(server6.example.com)中分别安装httpd,设置默认发布内容为主机名:
[root@server6 html]# yum install httpd -y
在/var/www/html/index.html写入默认发布内容,这两个节点的内容是不同的。
[root@server6 html]# vim /var/www/html/index.html
分别写入server4.example.com和server6.example.com
开启httpd服务:
[root@server6 html]# /etc/init.d/httpd restart
2然后在nginx的主配置文件中进行反向代理的配置:
进入nginx的主配置文件所在的目录,编辑主配置文件:
[root@server5 ~]# cd /usr/local/lnmp/nginx/conf/
[root@server5 conf]# vim nginx.conf
//nginx.conf配置文件
//在http模块中添加如下内容:
//...(省略)
upstream httpd_cluster {
#权重越高显示次数所占比例越高,该情况下显示4次192.168.3.244的,显示一次192.168.3.246的
server 192.168.3.244 weight=4;
server 192.168.3.246;
}
server {
listen 80;
server_name www.httpd.com;
location / {
proxy_pass http://httpd_cluster;
}
}
//...(省略)
修改配置文件完成后检测是否有语法错误,如果没有错误打开nginx服务:
检测:
[root@server5 conf]# nginx -t
nginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful
[root@server5 conf]# nginx
完成了各种配置后就可以进行检测了,我们在拥有浏览器的节点上对www.httpd.com主页进行解析,在/etc/hosts文件中写入。
/etc/hosts中内容
192.168.3.245 www.httpd.com
打开firefox浏览器,访问www.httpd.com页面,多刷新几次,可以看到两个上游服务器的内容在轮询:
server4.example.com(192.168.3.244)
server6.example.com (192.168.3.246)
小结:
上述搭配就实现了nginx反向代理上游服务器集群的过程,接下面的章节会向大家展示nginx实现虚拟主机的配置。敬请期待。