1、什么是代理服务器
代理服务器:客户端在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务器接受客户端请求之后,再向目的主机发出,并接收目的主机返回的数据,转发回给客户端。简单来说,就是一个”跳板”的作用。
2、为什么要使用代理服务器
1)提高访问速度
由于目的主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其是对于热门站点能够明显提高请求速度。
2)防火墙作用
由于所有客户端请求都必须通过代理服务器访问远程站点,因此可在代理服务器上设限,过滤不安全信息。
3、正向代理和反向代理
正向代理:代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。
正向代理的作用:
1)访问原来无法访问的资源,比如google
2)可以做缓存,加速访问资源
3)对客户端访问授权,上网进行认证
4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
反向代理:当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。
反向代理的作用:
1)保证内网的安全,阻止web攻击(大型网站,通常将反向代理作为公网访问地址,web服务器是内网)
2)负载均衡,通过反向代理来优化网站的负载
server语法:
server {
listen 80;
server_name www.magedu.com
location / {
后端服务器;
}
}
1)location /forum/ {
proxy_pass http://172.16.100.1:8080/bbs/; proxy_pass,反向代理
}
意味着用户访问http://www.magedu.com/forum/,这个访问请求会被转发至http://172.16.100.1:8080/bbs/
备注:
forum后面的斜线必须跟下面的bbs后面的斜线保持一致,意味着上面有斜线下面也必须有,上面没有斜线下面也必须没有
2)location ~* /forum/ {
proxy_pass http://172.16.100.1:8080/;
}
意味着用户访问http://www.magedu.com/forum,这个访问请求会被转发至http://172.16.100.1:8080/forum/(如果是模式匹配正则表达式的形式,下面只要指定服务器即可,否则会报错)
3)proxy_set_header:
location ~* /forum/ {
proxy_pass http://172.16.100.1:8080/;
proxy_set_header X-Real-IP $remote_addr;
}
说明:
这可以使得传递给后端的ip是真正的客户端的ip地址,但是在记录日志的时候还不是真正客户端的地址,而是代理服务器的ip地址。
如果向记录日志的时候记录的是真正客户端的ip地址,还需要编辑/etc/httpd/conf/httpd.conf配置文件:
LogFormat “%h…” ==> LogFormat “%{X-Real-IP}i…” ,后面加i表示的是引用这个变量的值,然后重启服务