代理用在客户端和服务器端之间
常用工具:netsh端口转发,portfwd端口转发,regeorg,EW,frp
正反代理依赖于我们是怎么配置的
如果web服务器配置客户端的IP和端口,将流量转发给用户,就是反向代理
如果客户端配置目标主机的IP和端口号,那么就是正向代理
正向代理
- 正向代理是面向客户端的
- 客户端需要知道服务器的地址
- 客户端需要配置代理的IP和端口号
对于服务器而言,服务器不知道客户端是谁,只知道代理,可以很好地隐藏客户端。因此我们常常挂一个国外的代理去访问国外的网站。
经常用于内网通过防火墙访问外网,类似于我们上网的过程,只是我们上网的时候一般都没有配置代理。
反向代理
- 反向代理是面向服务器的
- 客户端不知道服务器的地址,只需知道代理的地址,就能访问内网。
一般用在外网通过防火墙访问内网,例如我们在内网渗透的时候,我们不知道内网中机器的IP地址,经常需要配置反向代理来探测内网
反向代理可以为用户访问Web服务器进行加速。很多的大型网站都会用到反向代理,例如CDN,可以做到内网的安全,负责均衡等
Nginx 反向代理
安装在目的主机端,主要用于转发客户机请求,后台有多个http服务器提供服务,nginx的功能就是把请求转发给后面的服务器,决定哪台目标主机来处理当前请求。
比如在服务器上部署一个nginx的应用,让它监听80,81等端口,根据客户端访问不同的端口,Nginx应用就会将客户端的请求转发到对应的服务器
因此,它可以根据域名的不同,指向不同的服务器;也可以根据负载的不同,指向不同的服务器(这叫负载均衡)
下面是nginx的配置文件
upstream tomcatserver1 {
server 192.168.1.1:8081;
}
upstream tomcatserver2 {
server 192.168.1.2:8082;
}
server {
listen 80;
server_name 8081.max.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcatserver1;
index index.html index.htm;
}
}
server {
listen 80;
server_name 8082.max.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcatserver2;
index index.html index.htm;
}
}
当用户访问 8081.max.com 的80端口时,nginx会将客户的请求转发到tomcatserver1(192.168.1.1:8081)
端口转发和端口映射
端口转发
使用SSH加密,再将流量进行转发,相当于数据进了隧道,传递完之后在进行解密
端口映射
对流量不做任何处理直接进行传递