一、什么是反向代理
正向代理。
代理上网:代理服务器帮我们上网。
比如,在教室里上不了网。老师的电脑可以上网。老师可以开一个代理服务器,学生在自己的电脑上配置一下,通过老师的电脑上网。需要一个代理软件,装好之后,就都可以上网了。其实,学生的电脑是上不了网的,学生电脑把请求发送给老师电脑,老师服务器拿到请求之后,把请求发送给目标服务器。目标服务器响应之后,老师电脑再响应给学生。
正向代理说的是客户端,反向代理说的是服务端。
比如,一个公司,公司有多个网站。有天猫,有淘宝两个网站。只有一个服务器有公网ip,一个域名只能绑定一个ip。一个天猫,一个淘宝,两个域名不一样。两个域名都要绑定到这个ip,那么,怎么区分,访问的是哪个网站呢?上一篇博客,我们讨论了通过域名区分不同的网站。天猫部署到一个tomcat,淘宝部署到一个tomcat。请求来了,都应该到nginx这里,nginx需要将请求转发给不同的tomcat服务器。如果,访问的是天猫,就应该把请求转发给天猫所在的服务器。这就是反向代理。说白了,就是服务端这边,请求来了之后,由这个反向代理决定我把这个请求转发给那个应用服务器(tomcat)。服务端的代理,反向代理。一个ip,一个nginx作为入口。
反向代理服务器决定哪台服务器提供服务。
返回代理服务器不提供服务器。也是请求的转发。
二、Nginx实现反向代理
两个域名指向同一台nginx服务器,用户访问不同的域名显示不同的网页内容。
同一台服务器上装两个tomcat,一个运行在8080,一个运行在8081.
两个域名是www.sian.com.cn和www.sohu.com
nginx服务器使用虚拟机192.168.101.3
1.配置域名
第一步:安装两个tomcat,分别运行在8080和8081端口。
修改端口号
vim tomcat-sohu/conf/server.xml
第二步:启动两个tomcat。
[root@CentOS local]# tomcat-sina/bin/startup.sh
[root@CentOS local]# tomcat-sohu/bin/startup.sh
修改欢迎页
[root@CentOS local]# vim tomcat-sina/webapps/ROOT/index.jsp
[root@CentOS local]# vim tomcat-sohu/webapps/ROOT/index.jsp
看效果:
第三步:反向代理服务器的配置。
[root@CentOS nginx]# sbin/nginx -s reload
访问域名www.sina.com.cn, 80端口,先到的nginx,nginx监听了80端口。nginx拿到域名去匹配,把请求交给proxy_pass http://sina, 然后,映射到upstream sina, 在转发给8080这个tomcat。8080这个tomcat响应请求返回给nginx,nginx再返回给浏览器。