swoole实现http/https反向代理服务示例代码

代码语言:phpcli

所属分类:通讯

代码描述:swoole实现http/https反向代理服务示例代码,可在getTargetServer实现自己的负载均衡算法。

代码标签: swoole http 反向 代理 服务 示例 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<?php
//请在php7.2中运行
use Swoole\Coroutine\Http\Client;
use Swoole\Http\Server;
use Swoole\Coroutine\System;

// 创建一个 HTTPs 服务器
//$server = new Server("0.0.0.0", 9502, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL);
//创建http代理服务器
$server = new Server("0.0.0.0", 9502, SWOOLE_PROCESS, SWOOLE_SOCK_TCP );

//https的时候打开
// $server->set([
//     'ssl_cert_file' => '/data/cert/6284283_web.debug.only.bfw.wiki.pem', // 您的SSL证书文件路径
//     'ssl_key_file' => '/data/cert/6284283_web.debug.only.bfw.wiki.key', // 您的SSL私钥文件路径
// ]);
$server->set([
    'worker_num' => 1,
]);
function getTargetServer($data) {
 //负债均衡

    $backserverarr = [
        [
            "host" => "www.qq.com",
            "port" => 80,
            "issl" => false
        ],
        [
            "host" => "www.baidu.com",
            "port" => 443,
            "issl" => true
        ]
    ];
    return $backserverarr[array_rand($backserverarr,1)];


}

$server->on('request', function ($request, $response) {
    // 根据自定义规则分发请求到不同的服务器
    $targetServer = getTargetServer($request->rawContent());

    $modyheader = $request->header;
    if ($modyheader) {
        // $ip = system::gethostbyname($targetServer['host']);
        $modyheader['host'] = $targetServer['host'];
    }

    // 使用正则.........完整代码请登录后点击上方下载按钮下载查看

网友评论0