从配置websocket理解nginx

原文地址:
http://www.niu12.com/article/2
今天由于写了一个简单的基于h5 websoceket的聊天室,再本地都是好好了.
    但是上到服务器后就发现无法行的通,
查了了解到nginx需要进行特殊的配置才能支持websocket. linux安装nginx后,在/etc/nginx/conf.d/chat.niu12.com.conf来配置
/*********************************************************/
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
} server {
listen 80;
server_name chat.niu12.com; location / {
proxy_pass http://127.0.0.1:8889;
# 支持websocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
/*********************************************************/ map指令的作用:
根据客户端请求中$http_upgrade 的值,来构造改变$connection_upgrade的值
即根据变量$http_upgrade的值创建新的变量$connection_upgrade, 创建的规则就是{}里面的东西。其中的规则没有做匹配,因此使用默认的.
即 $connection_upgrade 的值会一直是 upgrade。然后如果 $http_upgrade为空字符串的话,
那值会是 close。 以上是nginx配置websocket,下面是由于自己在配置的时候发现对nginx还很生疏,就进行学习 什么是反向代理?
1、 proxy_pass:配置反向代理的路径。
  需要注意的是如果 proxy_pass 的 url 最后为 /,则表示绝对路径。
否则(不含变量下)表示相对路径,所有的路径都会被代理过去 反向代理是指以代理服务器来接受网络上的连接请求,
  然后将请求转发给内部网络上的服务器,
并将从服务器上得到的结果返回给请求连接的客户端,
  此时代理服务器对外就表现为一个反向代理服务器。 什么是负载均衡?
2、 upstream:配置负载均衡,upstream 默认是以轮询的方式进行负载,
    另外还支持四种模式,分别是: (1)weight:权重,指定轮询的概率,weight 与访问概率成正比 (2)ip_hash:按照访问 IP 的 hash 结果值分配 (3)fair:按后端服务器响应时间进行分配,响应时间越短优先级别越高 (4)url_hash:按照访问 URL 的 hash 结果值分配
其背后一般有多台 server,系统会根据配置的策略
  (例如 Nginx 有提供四种选择)来进行动态调整,
尽可能的达到各节点均衡,从而提高系统整体的吞吐量和快速响应 eg: upstream api.niu12.com {
server 127.0.0.1:8001;
server 127.0.0.1:8002;
} server {
listen 80;
server_name api.niu12.com; location / {
proxy_pass http://api.niu12.com/;
}
}
上一篇:04-maven学习-pom.xml解析


下一篇:同一页面中引入多个JS库产生的冲突解决方案(转)