国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

workerman 有沒有個(gè)http 的gateway的代理服務(wù)

bigman

比如:把所有所有的 xxx/test/user/test 全部代理到 0.0.0.0:8888 的http服務(wù)中
把所有所有的 xxx/test1/user/test 全部代理到 0.0.0.0:8887 的http服務(wù)中
根據(jù)不同的規(guī)則轉(zhuǎn)發(fā) 比如上面的 test 和 test1 作為模塊代理到不同的服務(wù)去

1336 2 2
2個(gè)回答

chen
admin
<?php

namespace app\cdn\process;

use Workerman\Connection\AsyncTcpConnection;
use Workerman\Connection\TcpConnection;

class CdnTcp
{
    public function onConnect(TcpConnection $connection)
    {
    }

    public function onWebSocketConnect(TcpConnection $connection, $http_buffer)
    {
        echo "onWebSocketConnect\n";
    }

    public function onMessage(TcpConnection $connection, $data)
    {
        // Parse http header.
        list($method, $addr, $http_version) = explode(' ', $data);
        $_headers=explode("\r\n",$data);
        $headers=[];
        foreach ($_headers as $_header){
            $_point=strpos($_header,':');
            if ($_point===false) continue;
            $headers[substr($_header,0,$_point)]=trim(trim(substr($_header,$_point),':'));
        }

        //源站IP地址
        $source_ip='baidu.com';
        $source_host='xx.xx.xx.xx';
        print_r('TCP轉(zhuǎn)發(fā)管道建立:用戶IP:'.$connection->getRemoteAddress().'| 訪問域名:'.$headers['Host'] .' | 源站:'.gethostbyname($source_ip).'| 回源域名'.$source_host);

        // Async TCP connection.
        $remote_connection = new AsyncTcpConnection('tcp://'.$source_ip);
        // CONNECT.

        if ($method !== 'CONNECT') {
            //替換request 中的回源host
            $remote_connection->send(CdnTcp::replaceHost($data,$source_host));
            // POST GET PUT DELETE etc.
        } else {
            $connection->send("HTTP/1.1 200 Connection Established\r\n\r\n");
        }

        $remote_connection->onMessage=function (TcpConnection $SourceConn, $SourceData)use ($connection){
            $connection->send($SourceData);
        };

        $remote_connection->onClose = function ($source) use ($connection) {
            $connection->close();
        };

        $remote_connection->onBufferFull = function ($SourceConn) use ($connection) {
            $connection->pauseRecv();
        };

        $remote_connection->onBufferDrain = function ($SourceConn) use ($connection) {
            $connection->resumeRecv();
        };

        $connection->onMessage=function (TcpConnection $ClientConn, $ClientData)use ($remote_connection,$source_host){
            $remote_connection->send(CdnTcp::replaceHost($ClientData,$source_host));
        };

        $connection->onClose = function (TcpConnection $ClientConn) use ($remote_connection) {
            $remote_connection->close();
        };

        $connection->onBufferFull = function (TcpConnection $ClientConn) use ($remote_connection) {
            $remote_connection->pauseRecv();
        };

        $connection->onBufferDrain = function (TcpConnection $ClientConn) use ($remote_connection) {
            $remote_connection->resumeRecv();
        };

        $remote_connection->connect();
    }

    public static function replaceHost(string $data,$host):string
    {
        return preg_replace('/Host: (.*)/i','Host: '.$host,$data);
    }

    public function onClose(TcpConnection $connection)
    {
        echo "onClose\n";
    }

}
  • bigman 2022-03-28

    謝謝! 我去試試

  • bigman 2022-03-28

    可以留個(gè)qq嗎?聯(lián)系一下!

  • admin 2022-03-28

    你好,進(jìn)群@我就行

  • bigman 2022-03-28

    我只有webman交流群1,可以把群號(hào)發(fā)下嗎?

  • admin 2022-03-28

    就在webman1群里,大家都可以幫助你

  • bigman 2022-03-28

    你id是什么 我私信下你

年代過于久遠(yuǎn),無法發(fā)表回答
??