使用Nginx代理GatewayWorker中websocket

环境
Nginx 1.10.1
CentOS release 6.8
一、安装模块
1、yum install openssl openssl-devel
2、使用nginx -V 查看是否安装成功
nginx-v.png

二、创建证书

cd /etc/nginx/conf.d/
openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

三、配置GatewayWorker中websocket端口
例如:
GatewayWorker.png

四、配置Nginx
1、新建Nginx配置文件
vi /etc/nginx/conf.d/wss.conf

upstream websocket {
        # 填写GatewayWorker中websocket监听的端口
    server 192.168.0.123:8181;
}

server {
        # 填写外部wss连接端口,不冲突即可
    listen 8282;
    ssl on;
    ssl_certificate /etc/nginx/conf.d/server.crt;
    ssl_certificate_key /etc/nginx/conf.d/server.key;
    ssl_session_timeout 5m;
    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;
    
    location / {
        proxy_pass /websocket;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }
}

2、将配置文件加到nginx配置里面
3、重启Nginx服务,配置防火墙(如果开了的话)

五、测试
JS代码
/ 直接使用 'wss:/ip:ports'的形式即可

var ws = new WebSocket('wss:/192.168.0.123:8282');

GatewayWorker中开启843端口

FlashSocket连接远程地址的时候,需要开启843端口来返回跨域文件。
在start_gateway中加入下面代码即可。

/ Flash Socket
$flash_policy = new Worker('tcp:/0.0.0.0:843');
$flash_policy->onMessage = function($connection, $message)
{
    $connection->send('<?xml version="1.0"?><cross-domain-policy><site-control permitted-cross-domain-policies="all"/><allow-access-from domain="*" to-ports="*"/></cross-domain-policy>'."\0");
    $connection->close();
};

5592104690

一个需要显示后台提交的错误日志的php页面,如何能完整的还原换行符的显示,让输出的日志具有格式。

916-861-2586