原创

Nginx转发ws为wss

http协议与webSocket协议

同:建立在TCP之上,同http一样通过TCP来传输数据

不同:HTTP协议为单向协议,即浏览器只能向服务器请求资源,服务器才能将数据传送给浏览器,而服务器不能主动向浏览器传递数据。分为长连接和短连接,短连接是每次http请求时都需要三次握手才能发送自己的请求,每个request对应一个response;长连接是短时间内保持连接,保持TCP不断开,指的是TCP连接。

WebSocket解决客户端发起多个http请求到服务器资源浏览器必须要经过长时间的轮询问题。

一种双向通信协议,在建立连接后,WebSocket服务器和Browser/UA都能主动的向对方发送或接收数据,就像Socket一样,不同的是WebSocket是一种建立在Web基础上的一种简单模拟Socket的协议;


Nginx配置

server{
	# ws 转 wss需要ssl证书,类似http转https
    listen 443 ssl;
    listen 80;
	# 需要域名
    server_name abcd.com;
	# 配置证书
    ssl_certificate   /data/soft/nginx/cert/abcd.com.pem;
    ssl_certificate_key  /data/soft/nginx/cert/abcd.com.key;

    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on; 
    
    charset utf-8;
	# 配置日志
    access_log  /data/logs/nginx/abcd.com.access.log  ext;
    error_log /data/logs/nginx/abcd.com.error.log error;
    # 转发配置(主要配置)
    location / {
        add_header Access-Control-Allow-Origin *;
        proxy_redirect off;
		# ws是在http基础之上的,这里使用proxy_pass代理ws地址(ws://127.0.0.1:2348)
        proxy_pass http://127.0.0.1:2348;
        proxy_set_header Host $host;
        proxy_set_header X-Real_IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;  
        proxy_set_header Connection "Upgrade";

    }

}
正文到此结束
评论

登录后才能发表评论 登录/注册

0评论
  • 还没有评论,快来抢沙发吧!