在某些情况下,比如使用了傲瑞通小程序客户端,由于小程序要求必须使用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端口。