正向代理和反向代理的区别在于其中的"代理"是代表谁的问题,是代表客户端还是代表真实的web服务器?
1.正向代理:
正向代理是代理客户端的(浏览器),此时客户端是知道真实web server地址的,而代理服务器并不知道其存在。我们从具体一次请求处理过程进行分析:首先在正向代理模式下浏览器是需要设置代理服务器地址的,比如:56.123.47.123:8080,此时在浏览器地址栏中输入的是真实web服务器的url(http://33.12.58.145/create/test.html)。请求开始,浏览器首先根据预先设置的代理服务器地址连接代理服务器,发包(此时的http请求包中是携带web server的地址的:GET http://33.12.58.145/create/test.html HTTP/1.1...\r\n\r\n),代理服务器收到http包之后就知道了web server的真实地址并建立连接发送请求,代理服务器得到资源包之后将其发送给客户端。
这相当于是客户端对代理服务器说某处有我想要的东西你帮我取拿回来的过程。
2.反向代理:
反向代理模式下客户端并不知道真实web server的地址,并且浏览器也不需要特别设置,此时客户端单纯的把代理服务器当做资源所在的服务器来访问。url(http://33.12.58.145/create/test.html...\r\n\r\n)中的地址就是代理服务器的地址,浏览器直接根据此地址来连接代理服务器,而真实web server地址对于代理服务器来说是已知的。
此种模式下相当于是web server告诉代理服务器其地址并附言如果有人请求资源就直接找你吧。