什么是反向代理
- 正向代理 – 客户端配置
正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
正向代理简单点说就是科学上网。
- 反向代理 – 服务端配置
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
Nginx实现反向代理
当两个域名同时绑定一台Nginx服务器时,根据用户访问不同的域名给用户显示不同的页面内容。
假如两个域名为:www.sian.com.cn和www.sohu.com
Nginx服务器使用的虚拟机的ip为:192.168.101.3
实现步骤:
- 安装两个tomcat,分别运行在8080和8081端口
- 启动两个tomcat
- 反向代理服务器的设置(修改/usr/local/nginx/conf/nginx.conf):
upstream tomcat1 {
server 192.168.25.148:8080;
}
server {
listen 80;
server_name www.sina.com.cn;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
<!-- 使用的是upstream的名字 -->
proxy_pass http://tomcat1;
index index.html index.htm;
}
}
upstream tomcat2 {
server 192.168.25.148:8081;
}
server {
listen 80;
server_name www.sohu.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcat2;
index index.html index.htm;
}
}
通过配置两个不同的service并配置upstream节点。
- 使用./nginx -s reload命令重新加载配置文件
- 在本地配置域名映射(修改host文件)
在hosts文件中添加域名和ip的映射关系
192.168.25.148 www.sina.com.cn
192.168.25.148 www.sohu.com
操作完成后,访问www.sina.com.cn时将转跳到tomcat1容器并且返回tomcat1中的页面
总结:
- Nginx反向代理技术实现了在一台服务器中存在多个网站。
- Nginx反向代理技术核心配置内容就是在/nginx/conf/nginx.conf文件下添加一个service节点,并配置对应的upstream即可。
- Nginx反向代理服务器也可以实现负载均衡。