傲瑞通(OrayTalk) 服务端如何开启 https 和 wss ?

在某些情况下,比如使用了傲瑞通小程序客户端,由于小程序要求必须使用SSL加密的通道,所以,傲瑞通服务端需要开启 https 和 wss。傲瑞通服务端的通信端口需开启wss以支持小程序的加密的websocket、而文件服务器的http需要开启https以支持小程序下载文件和图片。

由于除了小程序客户端外,同时可能还要支持其它类型的客户端(如PC、安卓原生),所以,傲瑞通服务端有必要同时支持http/https、ws/wss。

基于此,最好的解决办法是使用 nginx 反向代理来完成SSL的加解密工作,这样,原始部署的服务端就不用做任何改动。

(1)原始通信服务器端口默认为4530(ws),nginx反向代理端口为4533(wss)。

(2)原始文件服务器端口默认为9000(http),nginx反向代理端口为9003(https)。

于是,设定 nginx 配置文件nginx.conf如下即可:


#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;  
    keepalive_timeout  65;
   
    #
    # ESF 通信服务器反向代理(wss)
    server {
       listen       4533 ssl;
       server_name  localhost;

       ssl_certificate      cert.pem;
       ssl_certificate_key  cert.key;
       
       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;

       ssl_ciphers  HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers  on;

       location / {
        proxy_pass http://127.0.0.1:4530;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection upgrade;
       }
    }

    # MinIO 文件服务器反向代理(https)
    server {
       listen       9003 ssl;
       server_name  localhost;

       ssl_certificate      cert.pem;
       ssl_certificate_key  cert.key;

       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;

       ssl_ciphers  HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers  on;

       location / {
           root   html;
           index  index.html index.htm;
           proxy_pass  http://127.0.0.1:9000;
       }
    }
}

上述配置项中,cert.pem是SSL证书文件,cert.key是证书密码文件。

将 nginx 启动后,小程序客户端就可以连服务器的4533和9003端口,而其它客户端仍然使用4530和9000端口。