Nginx系列之反向代理的妙用
来源:互联网 发布:catiav5r20 软件下载 编辑:程序博客网 时间:2024/05/17 05:02
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协议很熟悉才能更好地使用。
声明:本文所有代码只能作为学习交流之用,万万不可用来做违法之事,否则后果自负。
0 0
- Nginx系列之反向代理的妙用
- Nginx之反向代理
- nginx之反向代理
- nginx之反向代理
- nginx之反向代理
- nginx的反向代理
- nginx的反向代理
- Nginx的反向代理
- nginx的反向代理
- Nginx系列(十.nginx反向代理)
- Nginx之正向代理与反向代理的区别
- nginx反向代理配置----nginx的学习之路
- Nginx 之六: Nginx服务器的反向代理功能
- Nginx之(正)反向代理
- nginx 之 反向代理理解
- Nginx学习之反向代理
- nginx的反向代理指令
- nginx的反向代理缓存
- 从美国人工智能年会看2017世界人工智能最新研究成果
- HDU1032 The 3n + 1 problem
- 备份mysql数据库
- installshield安装包类破解->全国计算机二级C语言软件破解
- ubuntu通过命令行设置较短的密码
- Nginx系列之反向代理的妙用
- python __getattribute__ 和 __getattr__的区别
- CUDA多个流的使用
- Docker安装(在Macbook中安装Docker)后配置阿里云加速器
- POJ 3057 Evacuation(BFS+二分图匹配)
- 最受欢迎的Python开源框架有哪些?
- 搭建SpringBoot的web-mvc项目
- 为一台华硕笔记本重装系统记录
- matlab之使用技巧