tcpproxy:基於 Swoole 實現的 TCP 數據包轉發工具的方法


假設我們希望有一台機器A(ip 192.168.1.101)要開放端口6379給用戶訪問,但可能實際情況是用戶無法直接訪問到A(ip 192.168.1.101), 但卻有一台機器B(ip 192.168.1.100) 可以開放一些其他端口給用戶訪問,為了讓用戶通過B(ip 192.168.1.100)能訪問到A(ip 192.168.1.101)上6379端口,基於swoole實現的Tcpproxy解決了這個問題! 當然你可以聯想到我們家里的內部機器是在外網無法訪問的,可正好你有一台雲服務器,所以我們可以通過Tcpproxy實現外部訪問你家里的內網應用, 說到這里你可以完全把它當成內網花生殼的功能. 按照上面描述的情況,配置我們的服務選項后如下

//sproxy_server使用 //守護進程模式 $proxy_conf['daemon'] = 1; //開放地址 $proxy_conf['host'] = '192.168.1.100'; //開放端口 $proxy_conf['ports'] = [ [9999, 7777, 0], //開放給用戶端口,內部轉發端口,是否http ]; //sproxy_client使用 $sproxy_conf = [ 'daemon' => 1, 'process_num' => 10, //指定代理服務地址+端口 'agent' => [ 'host' => '192.168.1.100', 'port' => 7777, ], //指定目標app地址+端口 'apps' => [ 'host' => '192.168.1.101', 'port' => 6379, ], ];

在A,B服務器分別運行

php sproxy_client.php php sproxy_server.php

趕緊部署試試吧



模擬內網花生殼功能時使用要點 需要一台有公網ip運行proxy_server.php開放給用戶訪問 在你的內網運行proxy_client.php來代理你的應用 為了調試更方便,對於內內網無php&swoole環境的,我們提供了sproxy,功能同proxy_client.php make #單以多進程模式運行 ./sproxy_process -s 127.0.0.1:6677 -t 127.0.0.1:6379 -c 10 -d #或以多進程多線程模式運行 ./sproxy_thread -s 127.0.0.1:6677 -t 127.0.0.1:6379 -c 10 -d -d 指定以守護進程模式運行 -s 指定proxy_server.php內部地址和端口 -t 指定需要代理app運行地址和端口 -c 指定開啟進程數量


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM