原文地址:
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/;
}
}