创建 WSS 服务
方法一、利用 Nginx 代理 SSL
- 已经申请了证书(
pem/crt
文件及 key
文件)放在了 /etc/ssl
目录(示例路径,可自定义,程序有访问权限即可)
Nginx
一般作为网站服务器运行着其它服务,为了不影响原来的站点使用,这里使用地址 域名.com/wss
作为 wss
的代理入口。
- 配置成功后,客户端连接地址为
wss://域名.com/wss
,即直接使用了 443
,连接地址中可省略端口号
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 服务
- 配置成功后,客户端连接地址为
wss://域名.com:端口号
- 需要
PHP
已经安装了 openssl
扩展
- 已经申请了证书(
pem/crt
文件及 key
文件)放在了 /etc/ssl
目录(示例路径,可自定义,程序有访问权限即可)
- 找到
config/worker_ws.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, // 如果是自签名证书需要开启此选项
]
],
];