由于tinyproxy1.6.3里面不支持反向代理,所以编译了最新版的1.8.3,中间遇到了一些问题,记录一下,以防忘记。
环境:
PC系统:ubuntu 10.04
开发板:micro2440,linux3.11.10
网络拓朴:A<-->B<-->C
其中:
A的IP:192.168.20.10
B的IP:IP(和A)192.168.20.11,IP(和C)192.168.30.11
C的IP:192.168.30.10
C一般运行Apache服务器,搭建过程可见这篇博客http://blog.csdn.net/xiaominthere/article/details/21115393
1.编译源码
1.1源码下载
去网站https://files.banu.com/tinyproxy/1.8/tinyproxy-1.8.3.tar.gz下载tinyproxy1.8.3的源码,解压
1.2交叉编译
进入目录:cd tinyproxy-1.8.3
生成Makefile :./configure CC=arm-linux-gcc --host=arm-linux --target=arm-linux --disable-regexcheck --enable-reverse
注意:添加--disable-regexcheck的目的是不让其检查正则表达式的库,不然会报regex库的错;添加 --enable-reverse是为了添加反向代理功能
执行完之后汇报错:configure: error: Test for asciidoc failed. See the file 'INSTALL' for help.
好了,这里需要几步来修改:
1.2.1 ../tinyproxy-1.8.3/configure文件
(1)把“# Check for asciidoc”(包含)到“if test x"$A2X" = x"no"; thenas_fn_error $? "Test for asciidoc failed. See the file 'INSTALL' for help." "$LINENO" 5fi”(包含)的内容注释了,或是删除了
(2)把含“HAVE_A2X_TRUE”的if...fi整段注释掉或是删除
1.2.2执行上面的./configure CC=arm-linux-gcc --host=arm-linux --target=arm-linux --disable-regexcheck --enable-reverse生成Makefile文件
1.2.3 ../tinyproxy-1.8.3/config.h
把包含“rpl_”的两句话注释或是删除
1.2.4 ../tinyproxy-1.8.3/src/Makefile
在LDFLAGS后面加-s去掉调试信息,这样生成的目标文件就很小了,LDFLAGS = -Wl,-z,defs -s,其实不加也行,编译出来也就200多k
1.2.5 ../tinyproxy-1.8.3/Makefile
把“SUBDIRS”后面的内容除“src”外全部删除,SUBDIRS = src
1.2.6 make,然后去找../tinyproxy-1.8.3/src/tinyproxy和../tinyproxy-1.8.3/etc/tinyproxy.conf.in,将tinyproxy.conf.in改为tinyproxy.conf,里面的内容也需要修改:
(1)
User nobody
Group nobody
改为
User root
#Group nobody
(2)
#ReversePath "/wired/" "http://www.wired.com/"
改为(去掉注释符号#)
ReversePath "/proxy/" "http://192.168.30.10:80"
这样,当你从A去访问"http://192.168.20.11:8888/proxy/的时候,通过反向代理就能访问到C中的网站http://192.168.30.10:80,但其实C此时和B的IP(和C)可能只是在一个局域网里,这样服务器C就会被代理B(IP:192.168.20.11)“隔离”
(3)
#ReverseOnly Yes
改为(去掉注释号#)
ReverseOnly Yes
(4)
#ReverseMagic Yes
改为(去掉注释号#)
ReverseMagic Yes
(5)
#ReverseBaseURL "http://localhost:8888/"
改为(去掉注释号#)
ReverseBaseURL "http://192.168.20.11:8888/"
2.执行
2.1下载到开发板里
通过minicom或是其他方式将tinyproxy和tinyproxy.conf,下载到一个文件夹里,比如/temp
2.2运行
注意:要使用root运行,建议使用&在后台运行,不然会阻塞显示终端
./tinyproxy -d -c ./tinyproxy.conf &
在第一次运行时可能会报,没有某几个文件夹,按照报的错,建立文件夹即可
2.3在A中的浏览器中输入http://192.168.20.11:8888/proxy/就可以访问了