1、什么是正向和反向代理?
我们常说的代理也就是指正向代理,正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求。
正向代理的用途:
* 可以到达远方,不可描述
* 可以做缓存,加速访问资源
* 对客户端访问授权,上网进行认证
* 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
反向代理隐藏了真实的服务端,当我们请求一个网站的时候,背后可能有成千上万台服务器为我们服务,但具体是哪一台,我们不知道,也不需要知道,我们只需要知道反向代理服务器是谁就好了,反向代理服务器会帮我们把请求转发到真实的服务器那里去。
反向代理的用途:
* 保证内网的安全,阻止web攻击,大型网站,通常将反向代理作为公网访问地址,Web服务器是内网
* 负载均衡,通过反向代理服务器来优化网站的负载
总结
正向代理即是客户端代理,代理客户端,服务端不知道实际发起请求的客户端。
反向代理即是服务端代理,代理服务端,客户端不知道实际提供服务的服务端。
2、两种代理的nginx配置方式
正向代理
#代理服务器设置
server {
# 端口
listen 8080;
# 地址
server_name localhost;
# DNS解析地址
resolver 8.8.8.8;
# 代理参数
location / {
# $http_host就是我们要访问的主机名
# $request_uri就是我们后面所加的参数
proxy_pass http://$http_host$request_uri;
}
}
反向代理到一组服务
upstream backend{
server 172.16.0.10:8080;
server 172.16.0.20:8080;
server 172.16.0.30:8080;
}
server {
resolver 8.8.8.8;
resolver 114.114.114.114;
listen 8080;
access_log /home/lin/proxy.access.log;
error_log /home/lin/proxy.error.log;
location / {
proxy_pass http://backend;
proxy_set_header Host $http_host;
proxy_ssl_session_reuse off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#记录客户端地址,多级代理服务期地址
proxy_hide_header X-Forwarded-For;#不记录客户端地址
}
}