Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

https+wss proxy

未关闭
#13 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
25/100
Issue 类型
缺陷
描述清晰度
需要澄清
活跃度
停滞
技术栈
php
领域
networking

调研方向

从 issue 中的最小复现开始,检查 onMessage 处理程序,包括 Worker 和 AsyncTcpConnection 的设置以及 CONNECT 处理。复现 HTTPS/WSS 失败,然后验证代理能够建立正常工作的加密隧道,同时不破坏现有的 HTTP/WebSocket 行为。

由索引模型根据 Issue 内容生成。

描述

Hi @walkor. In my project, i'm using this awesome example of http proxy server. And its work fine. Btw its work for http+websocket proxy.
But when i try to use it with https and wss its fail.
I see, that this is because in method "onMessage" i have encrypted data. Can you pls help me to solve this task?

Of cource, when i do this

$remote_connection->pipe($connection); 
$connection->pipe($remote_connection);
$remote_connection->connect();

data passing encrypted to destination and its not what he expects.

I try to replace tcp://0.0.0.0:xxx to http://0.0.0.0:xxx, but it still not working. Pls, help me.

Here is my minimal code, for reproduce

<?php

$context = array(
    'ssl' => array(
        'local_cert' => app_paths['ssl_public_key'], // Alternatively, it can be a crt file
        'local_pk' => app_paths['ssl_private_key'],
        'verify_peer' => false,
        'allow_self_signed' => true,
    )
);

$worker = new Worker('tcp://0.0.0.0:' . $args['port'], $context);
$worker->transport = 'ssl';

$worker->onMessage = function ($connection, $buffer) use ($args) {

    list($method, $addr, $http_version) = explode(' ', $buffer);
    $remote_connection = new AsyncTcpConnection("tcp://{$args['proxy-ip']}:{$args['port']}");
    if ($method !== 'CONNECT') {
        $remote_connection->send($buffer);
    } else {
        $connection->send("HTTP/1.1 200 Connection Established\r\n\r\n");
    }
    $remote_connection->pipe($connection);
    $connection->pipe($remote_connection);
    $remote_connection->connect();

};
主要语言
PHP
星标
207
派生
92
PR 合并指标
30 天内没有已合并 PR

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

walkor/php-http-proxy 的其他 Issue

查看 walkor/php-http-proxy 的全部 Issue

相似的 Issue

更多 PHP Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。