极客专栏《Nginx 核心知识 100 讲》105--106 小节, 笔记
注意: 这个是看专栏视频, 敲的哈. 这个专栏让我收货蛮大的.
105 | Memcached 反向代理的用法
Memcached 反向代理
image.PNG
这个反向代理模块是应用层的. 通过把 Memcached 协议和 http 协议做一次转换. 它的功能比较简单, 只能够完成 Memcached 协议中的 get 请求. 我们可以把客户端传过来的 get 请求根据它的参数转换成 Memcached 协议, 取出 Memcached 协议相应的 key 对应的值. 再把这个值发给用户.
flags: 表示这个 key 属于哪一个标签. 相当于一个类别而已.
bytes: 就是 value 有多少个字节.
memcached_key: 构造 get 命令中的 key.
Memcached 指令
image.PNG
memcache 服务存一个 key-value
image.PNG
image.PNG
红色箭头指向的是, 构造 key 的方法.$arg_key 取 key 字段的值.
image.PNG
memcached_gzip_flag : 我们去设置到 Memcached 中的值可能是做过压缩的. 2 是分类标记. 这样 nginx 会根据这样的 key, 告诉浏览器内容做过压缩.
假装设置一个做过压缩的 key-value.flag 为 2
image.PNG
image.PNG
image.PNG
106 | 搭建 websocket 反向代理
在我们前面介绍过的 http 反向代理中非常容易实现 WebSocket 反向代理. WebSocket 协议是现在广为使用的一种 Web 通讯方式. 它相比较 http 协议而言, 最大的优势, 它可以通过服务端向浏览器推送请求. 以使得我们可以实现一个浏览器的页面可以及时的向用户反映服务的变化. 当然 WebSocket 协议因为它使用了长连接, 它使用了二进制通讯格式, 它的通讯效率也要比 http 协议高一些, 现在很多语言它们都有常用的 WebSocket 开发库, 开发成本也是很低的.
websocket 反向代理
image.PNG
image.PNG
升级成 websocket, 必须要有三点 (看红字).
第一, http1.0 要改成 http1.1.
第二, 通过 proxy_set_header, 把 connection 加入 Upgrade.http1.1 要升级为 WebSocket
第三, Upgrade: WebSocket.
如果说上游服务支持 websocket 的话, 返回 101 Web Socket Protocol Handshake 这个时候我们这个连接就是 websocket 连接了. 接下来就可以双向通信了.
image.PNG
image.PNG
协议和扩展
因为有序, 没办法多路复用 (多路复用是可以在一个连接上发送多个未完成的请求和响应). 但是它可以通过插件实现, 但是插件很少人使用.
环境测试
image.PNG
image.PNG
测试, 因为配置了 ssl 所以 用 wss
image.PNG
抓包结果
都是二进制格式.
image.PNG
来源: http://www.jianshu.com/p/807f74c76fe0