天天看点

从配置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/;
        }
    }
           

转载于:https://www.cnblogs.com/zhouqi666/p/10138377.html

继续阅读