Total Pageviews

Sunday, 14 July 2019

一个http代理服务器程序-proxyme

基于java NIO的http代理.

性能与内存

占用cpu不到1%
内存最大35m(不含jvm自身)。GC次数和时间很少
总的来说,性能可以了吧。

命令行参数

可以添加两个命令行参数: host=xxxx port=8080
如果不设置这两个参数: 本地代理将使用InetAddress.getLocalhost()的ip和8080的端口。
注意,一台电脑会有好几个ip地址。如果使用127.0.0.1,则该代理只可以在本机上使用。如果使用局域网地址(最常见的是192.168.x.x),并合理配置jdk的防火墙权限,则可以在局域网中使用该代理。
那么如何把该代理部署到云服务器上?如下:
[root@VM_26_36_centos ~]ifconfig
eth0: flags=4163  mtu 1500
        inet 10.154.26.36  netmask 255.255.192.0  broadcast 10.154.63.255
        ether 52:54:00:b5:bb:6a  txqueuelen 1000  (Ethernet)
        RX packets 41677295  bytes 5458697312 (5.0 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 41351236  bytes 5660742157 (5.2 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 3370828  bytes 195574819 (186.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3370828  bytes 195574819 (186.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@VM_26_36_centos ~]# java -jar proxyme.jar host=10.154.26.36
15:09:03.245 [main] WARN HttpProxyBootStrap - 提示:允许携带两个命令行参数 host=xxx port=1234
15:09:03.337 [main] INFO LocalSelector - 在10.154.26.36:8080端口启动了代理服务。注意可能非127.0.0.1
先ifconfig找到自己的云服务器内网地址(其实和局域网地址一个意思),然后在启动的命令行参数中,增加host=内网地址,进行启动。当然还需要配置防火墙。配好之后就可以连上服务器使用代理了。
不过,不可以用来翻墙。
---------
可以用做各种tunnel(stunnel,obfstunnel)的后端程序。

No comments:

Post a Comment