Nginx系列之反向代理的妙用
2017-02-14 23:05
246 查看
1、概述
nginx的反向代理功能,使得nginx本身不必自己产生内容,而是把请求交给代理服务器,从代理服务器获取内容,返回给用户,对于解耦非常有用。此外,还有其他一些妙用。2、有趣的例子
2.1 让你的网站看上去像qq官网
配置location / { proxy_pass http://www.qq.com/; }
效果截图
除了地址栏的地址不一样,页面内容是不是完全一样!
2.2 替换一些内容
location / { # 必须设置,不然www.qq.com返回的是gzip压缩过的内容 proxy_set_header Accept-Encoding ""; proxy_pass http://www.qq.com/; # 使用sub模块 sub_filter_once off; # 可用替换多次 sub_filter "新闻" "旧闻"; # 把 新闻 替换成 旧闻 sub_filter "NBA" "NBC"; # 把 NBA 替换成 NBC }
效果截图
从截图可用看到,只有“NBA”替换成“NBC”成功了,“新闻”替换成“旧闻”失败了,不要着急,下个例子我们解决这个问题。
2.3 处理字符编码
打开Chrome浏览器的调试窗口从截图我们得知,服务器返回的内容经过了gzip压缩,内容编码为GB2312,gzip压缩的问题我们用 proxy_set_header Accept-Encoding “”; 指令解决了。对于编码问题,由于配置文件的编码为UTF-8,网页内容编码为GB2312,所以对于中文,编码不一样,无法用“旧闻”替换“新闻”。把配置文件夹保存为GBK(兼容GB2312)试下。
不出所料,生效了!
2.4 搞点事情
既然有sub_filer模块可以用来替换内容,不如把它发扬光大。在 2.2 中最后一个sub_filter下面添加一行:
sub_filter "</html>" "<style>.qqlogo{transform:rotateX(180deg)!important;}</style></html>";
该配置指令的作用是在html文件末尾提交一个css样式,让.qqlogo 对应元素的样式翻转180度。果真起作用了,^_^。
2.5 两次proxy_pass
在 2.2 中,我们需要用 proxy_set_header Accept-Encoding “”;配置指令,以便让www.qq.com返回解压缩后的内容,以方便内容替换。这种做法会增加网络流量,那有有没有更好的方法呢?我百度了好久,有人提出用两次proxy_pass,第一次是向远程服务器,获取到的是gzip压缩的内容,第二次是内部proxy_pass,获取到解压后的内容。可惜没有例子。只好自己去试错了,功夫不负有心人,被我给试出来了,^_^。location / { # 该行指令与下面 location /pass/ 中的 gunzip on 二选一即可 proxy_set_header Accept-Encoding ""; proxy_set_header Host $host; # 内部proxy_pass proxy_pass http://127.0.0.1/pass$uri; sub_filter_once off; sub_filter "新闻" "旧闻"; sub_filter "NBA" "NBC"; sub_filter "</html>" "<style>.a_cover,.qqlogo{transform:rotateX(180deg)!important;}</style></html>"; } location /pass/ { #gunzip on; proxy_pass http://www.qq.com/; }
跟上例一样的结果。
3、总结
nginx的反向代理功能还是挺强大的,恰当的使用能够实现一些非常有趣的功能。当然了,必须对HTTP协议很熟悉才能更好地使用。声明:本文所有代码只能作为学习交流之用,万万不可用来做违法之事,否则后果自负。
相关文章推荐
- Tomcat系列之服务器的基本配置及Nginx反向代理tomcat服务
- nginx系列:nginx反向缓存代理详解 推荐
- nginx做反向代理结合apache
- NginX高性能WEB和反向代理服务器介绍
- 配置nginx反向代理时,要注意的权限设置
- Nginx HTTP负载均衡/反向代理的相关参数测试
- squid,nginx,lighttpd反向代理的区别
- web负载均衡与反向代理之nginx
- squid,nginx,lighttpd反向代理的区别
- nginx 安装+反向代理设置
- nginx 反向代理之使用特定目录和处理程序
- Nginx反向代理后防盗链设置
- nginx 反向代理 iis 服务失败
- nginx_反向代理_负载均衡
- Nginx HTTP负载均衡/反向代理的相关参数测试
- 配置nginx反向代理时,要注意的权限设置
- nginx for windows之反向代理
- nginx架设http负载均衡和反向代理服务器
- Nginx 高性能的 HTTP 和 反向代理 服务器
- Nginx ("engine x") 高性能的 HTTP 和 反向代理 服务器