按照官方文檔的示例,配置了nginx的wss反向鏈接。如下:
server{
listen 443;
listen :443;
server_name c.officedog.cn;
root /alidata/www/cd;
ssl on;
ssl_certificate /etc/nginx/cert/214354783860444.pem;
ssl_certificate_key /etc/nginx/cert/214354783860444.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_session_cache shared:SSL:50m;
ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4 RSA: HIGH: MEDIUM: LOW: SSLv2: EXP;
ssl_prefer_server_ciphers on;
location /wss/ {
proxy_pass http://120.24.64.45:8282/; 指向服務器socket服務器
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
#其他略
其中,http://120.24.64.45:8282/ 指向socket服務器。
protected $socket = 'websocket://120.24.64.45:8282';
測試一:客戶端直接訪問 ws://域名:8282 ,能否正常訪問。
測試二:客戶端訪問 wss://域名 ,由nginx反向鏈接 ws://域名:8282 ,就報錯了。報錯內容如下:
WebSocket connection to 'wss://c.officedog.cn/' failed: Error during WebSocket handshake: Unexpected response code: 200
環(huán)境,阿里云CentOS7,PHP7,nginx。