创建 WSS 服务

方法一、利用 Nginx 代理 SSL

  1. 已经申请了证书(pem/crt 文件及 key 文件)放在了 /etc/ssl 目录(示例路径,可自定义,程序有访问权限即可)
  2. Nginx 一般作为网站服务器运行着其它服务,为了不影响原来的站点使用,这里使用地址 域名.com/wss 作为 wss 的代理入口。
  3. 配置成功后,客户端连接地址为 wss://域名.com/wss,即直接使用了 443,连接地址中可省略端口号
bash 复制代码
server {
  # 监听端口 443
  listen 443;
  server_name 站点域名.com;

  # SSL 相关配置开始,部分集成环境能可视化配置,所以若已存在则不再需要手动配置,主要是证书和秘钥路径 <<<
  # 证书文件路径(绝对路径)
  ssl_certificate /etc/ssl/server.pem;
  # 证书秘钥文件路径(绝对路径)
  ssl_certificate_key /etc/ssl/server.key;
  ssl_session_timeout 5m;
  ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
  # SSL 相关配置结束 >>>

  # 反向代理配置开始 <<<
  location /wss
  {
    # 若有自定义 ws 服务端口,请注意修改
    proxy_pass http://127.0.0.1:2828;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header X-Real-IP $remote_addr;
  }
  # 反向代理配置开始 >>>

  # location / {} 站点的其它配置...
}

方法二、通过系统内配置创建 wss 服务

  1. 配置成功后,客户端连接地址为 wss://域名.com:端口号
  2. 需要 PHP 已经安装了 openssl 扩展
  3. 已经申请了证书(pem/crt 文件及 key 文件)放在了 /etc/ssl 目录(示例路径,可自定义,程序有访问权限即可)
  4. 找到 config/worker_ws.php 配置文件,做如下配置
php 复制代码
return [
    // ... 以上略

    // Worker的参数(支持所有配置项)
    'option'         => [
        // 请增加以下配置项,设置 transport 开启 ssl
        'transport' => 'ssl',
    ],

    // 网关(Gateway)上下文选项
    'gatewayContext' => [
        'ssl' => [
            'local_cert'        => '/etc/ssl/server.pem', // 也可以是 crt 文件
            'local_pk'          => '/etc/ssl/server.key',
            'verify_peer'       => false,
            'allow_self_signed' => false, // 如果是自签名证书需要开启此选项
        ]
    ],
];