nginx升级连接为websocket

利用nginx代理wss【通讯原理及流程】#

  • wss协议实际是websocket+SSL,就是在websocket协议上加入SSL层,类似https(http+SSL)。
  • 客户端发起wss连接连到nginx
  • nginx将wss协议的数据转换成ws协议数据并转发到Workerman的websocket协议端口
  • Workerman收到数据后做业务逻辑处理
  • Workerman给客户端发送消息时,则是相反的过程,数据经过nginx/转换成wss协议然后发给客户端
server {
    listen   80;
    listen 443 ssl http2;
    server_name example.com;
    location / {
        # 代理转发地址
        proxy_pass   http://127.0.0.1:8080;
        # 超时设置
        proxy_read_timeout   3600s;
        # 启用支持websocket连接,重要的是这两行,它表明是websocket连接进入的时候,进行一个连接升级将http连接变成websocket的连接。
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
    # 强制https
    if ($server_port !~ 443){
        rewrite ^(/.*)$ https://$host$1 permanent;
    }
    # SSL证书配置
    ssl_certificate    /www/server/panel/vhost/cert/example.com/fullchain.pem;
    ssl_certificate_key    /www/server/panel/vhost/cert/example.com/privkey.pem;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";
}
posted @   老卫同学  阅读(219)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示
主题色彩