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