跳转到主内容
极星编程网:以代码为星,赴技术山海!

配置Nginx支持WebSocket连接,wss和ws都搞定?

文章导读

搞技术,就是要追求极致。今天,我们就来聊聊如何在Nginx中配置WebSocket连接,让你同时支持wss和ws,实现安全的实时通信。读完这篇文章,你将掌握WebSocket的原理,学会如何在Nginx中配置SSL和wss,还能避开一些常见的坑点。

一、wss与nginx代理wss的理解

首先,我们要明白wss协议实际上是在WebSocket协议的基础上加入了SSL层,就像https是在http的基础上加入了SSL一样。

  • 客户端发起wss连接到nginx。
  • nginx将wss协议的数据转换成ws协议数据,并转发到Workerman的websocket协议端口。
  • Workerman收到数据后进行业务逻辑处理。
  • 当Workerman需要给客户端发送消息时,数据会经过nginx转换成wss协议,然后发送给客户端。

二、nginx配置ssl和wss

下面是一个Nginx配置SSL和wss的示例代码:


server {
    listen 80;
    listen 443 ssl;
    server_name 域名;

    ssl on;
    ssl_certificate 证书.crt;
    ssl_certificate_key 证书.key;
    ssl_session_timeout 5m;
    ssl_session_cache shared:SSL:50m;
    ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_prefer_server_ciphers on;

    location /wss/  {   
     proxy_pass http://127.0.0.1:82/;        #通过配置端口指向部署websocker的项目
     proxy_http_version 1.1;    
     proxy_set_header Upgrade $http_upgrade;    
     proxy_set_header Connection
                            

相关文章