反向代理
概述
反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器
我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP
地址。
反向代理案例一
- 实现效果:使用 nginx 反向代理,访问
www.machoul.com
直接跳转到 172.16.140.128:8080 - 步骤:
- 启动tomcat,通过172.16.140.128:8080 可以访问到tomcat的页面
- 修改本机host文件, 添加配置
172.16.140.128 www.123.com
- 修改nginx.conf文件
server {
#监听的是当前服务器端口80,访问80端口跳转到172.16.140.128:8080
listen 80;
# 修改 server_name 为172.16.140.128
server_name 172.16.140.128;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
#修改 proxy_pass 为 要跳转的路径
proxy_pass http://172.16.140.128:8080;
index index.html index.htm;
}
反向代理案例二
- 实现效果:
- 使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中,nginx 监听端口为 9001,
- 访问
http://172.16.140.128:9001/aaa/
直接跳转到 172.16.140.129:8080 - 访问
http://172.16.140.128:9001/bbb/
直接跳转到 172.16.140.129:8081
- 准备工作:
- 准备两个tomcat服务器,一个8080端口,一个8081端口
- 创建文件夹和测试页面
- 8080的tomcat的webapp下添加 aaa/index.html
- 8081的tomcat的webapp下添加 bbb/index.html
- tomcat的默认根目录在ROOT下
- 修改nginx.conf
#监听的是当前服务器的9001端口
listen 9001;
server_name 172.16.140.128;
#charset koi8-r;
#access_log logs/host.access.log main;
location ~ /aaa/ {
root html;
proxy_pass http://172.16.140.129:8080;
index index.html index.htm;
}
location ~ /bbb/ {
proxy_pass http://172.16.140.129:8081;
}
location指令说明
该指令用于匹配 URL。
location [= | ~ | ~* | ^~] uri {
}
- = :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
- ~:用于表示 uri 包含正则表达式,并且区分大小写。
- ~*:用于表示 uri 包含正则表达式,并且不区分大小写。
- ^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用location块中的正则 uri 和请求字符串做匹配。