反向代理
初识反向代理
反向代理 (Reverse Proxy) 是指以代理服务器来接受 Internet 的连接请求,然后将请求转发给内部服务器,并将从服务器得到的结构返回给 Internet 请求客户端,喜事的代理服务器对外表现为一个反向代理服务器。
反向代理作用
- 保护网站安全 – 任何来自 Internet 的请求都必须先经过代理服务器
- 通过配置缓存功能加速 Web 请求 – 可以缓存后端 Web 服务器的某些静态资源,减轻 Web 服务器的负载
- 实现负载均衡 – 充当负载均衡服务器均衡的分发请求,平衡集群中各个服务器的负载压力
安装 Nginx
安装过程参考 nginx+php-fpm 这篇文章的安装过程
配置反向代理
简单的反向代理就是 http,不需要缓存控制等高级功能,仅仅一个简单的代理,比如 nginx+php-fpm 也是一种反向代理
|
|
而相对复杂一些的就是反向代理一些网站,会应用到缓存控制机制。
简单反向代理
- 在 nginx.conf 配置文件中的 http 块中添加下面内容
|
|
- 在虚拟主机配置文件 proxy.zerounix.com.conf 文件中添加下面内容
|
|
使用SSL的反向代理
- 安装nginx
需要将将 ‘–with-http_sub_module、ngx_cache_purge-2.3’ 编译到 nginx 中
下载链接http://labs.frickle.com/files/
|
|
- 签发证书
自己签发免费 ssl 证书,为 nginx 生成自签名 ss l证书(访问时需添加信任。也可以使用第三方签名后的证书,如免费的 startssl)
- 配置反向代理
|
|
1 监听了 80 和 443 端口,可以在 Linux自己生成证书。
2 定义了个 upstream google,放了 5 个谷歌的 ip(通过 nslookup www.google.com 命令获取(yum -y install bind-utils)),如果不这样做,就等着被谷歌的验证码搞崩溃吧。
3 也设置了反向代理缓存,某些资源不用重复去请求谷歌获取,加快搜索速度
4 proxy_redirect http://www.google.com/ /; 这行的作用是把谷歌服务器返回的302响应头里的域名替换成我们的,不然浏览器还是会直接请求 www.google.com,那样反向代理就失效了。
5 proxy_cookie_domain google.com proxy.zerounix.com; 把 cookie 的作用域替换成我们的域名
6 proxy_pass http://google; 反向代理到 upstream google
7 proxy_set_header Accept-Encoding “”; 防止谷歌返回压缩的内容,因为压缩的内容我们无法作域名替换
8 proxy_set_header Accept-Language “zh-CN”;设置语言为中文
9 proxy_set_header Cookie “PREF=ID=047808f19f6de346:U=0f62f33dd8549d11:FF=2:LD=zh-CN:NW=1:TM=1325338577:LM=1332142444:GM=1:SG=2:S=rE0SyJh2w1IQ-Maw”; 这行很关键,传固定的 cookie 给谷歌,是为了禁止即时搜索,因为开启即时搜索无法替换内容。还有设置为新窗口打开网站,这个符合我们打开链接的习惯
10 sub_filter www.google.com proxy.zerounix.com当然是把谷歌的域名替换成我们的了,注意需要安装 nginx 的 sub_filter 模块(编译加上–with-http_sub_module参数)