代理服务器学习日志(三)- Eclipse编译tinyproxy

使用eclipse编译运行tinyproxy源码

一 新建eclipse tinyproxy工程

1 eclipse新建linux_gcc工程,如下图:

代理服务器学习日志(三)- Eclipse编译tinyproxy_第1张图片

点击Finish即可。

2 新建的工程如下图:



3 将tinyproxy源码直接拷贝粘贴到tinyproxy_linuxgc目录下面即可。


4 在控制台进入该目录,运行./configure生成makefile文件

运行命令之后,文件目录如下图:

代理服务器学习日志(三)- Eclipse编译tinyproxy_第2张图片


5 刷新eclipse,则代码加载进入eclipse当中


6 选择工程,右键属性


7 右键工程点击build project,则工程编译成功

8 右键工程运行即可

9.eclipse下的tinyproxy源码工程在这里。


二 代码中开启反向代理功能

tinyproxy的源码默认是不开启反向代理功能的,我们必须修改相关的文件,才可以使反向代理生效。

1.修改tinyproxy根目录下的config.h,添加

/* Include support for reverse proxy. */
/* #undef REVERSE_SUPPORT */
#define REVERSE_SUPPORT 1

2.修改tinyproxy/src目录下面的makefile文件,添加reverse-proxy.c reverse-proxy.h的编译以及reverse-proxy.o的链接,makefile文件修改内容如下:

PROGRAMS = $(sbin_PROGRAMS)
am_tinyproxy_OBJECTS = acl.$(OBJEXT) anonymous.$(OBJEXT) \
	buffer.$(OBJEXT)  child.$(OBJEXT) conf.$(OBJEXT) \
	conns.$(OBJEXT) daemon.$(OBJEXT) hashmap.$(OBJEXT) \
	heap.$(OBJEXT) html-error.$(OBJEXT) http-message.$(OBJEXT) \
	log.$(OBJEXT) network.$(OBJEXT) reqs.$(OBJEXT) sock.$(OBJEXT) \
	stats.$(OBJEXT) text.$(OBJEXT) main.$(OBJEXT) utils.$(OBJEXT) reverse-proxy.$(OBJEXT)\
	vector.$(OBJEXT) upstream.$(OBJEXT) connect-ports.$(OBJEXT)
tinyproxy_OBJECTS = $(am_tinyproxy_OBJECTS)
DEFAULT_INCLUDES = -I. -I$(top_builddir)
tinyproxy_SOURCES = \
	acl.c acl.h \
	anonymous.c anonymous.h \
	buffer.c buffer.h \
	child.c child.h \
	common.h \
	conf.c conf.h \
	conns.c conns.h \
	daemon.c daemon.h \
	hashmap.c hashmap.h \
	heap.c heap.h \
	html-error.c html-error.h \
	http-message.c http-message.h \
	log.c log.h \
	network.c network.h \
	reqs.c reqs.h \
	sock.c sock.h \
	stats.c stats.h \
	text.c text.h \
	main.c main.h \
	utils.c utils.h \
	vector.c vector.h \
	upstream.c upstream.h \
	connect-ports.c connect-ports.h \
	reverse-proxy.c reverse-proxy.h \

EXTRA_tinyproxy_SOURCES = filter.c filter.h \
	reverse-proxy.c reverse-proxy.h \
	transparent-proxy.c transparent-proxy.h


三 简介tinyproxy代理服务器源码思路

tinyproxy的main.c文件中根据配置文件初始化完配置文件中配置的值之后,会调用child.c中的child_main_loop函数,在该函数中会创建子进程,从而在child_main函数中开启对端口的监听,监听客户端的连接请求。当客户端有连接请求时,会调用reqs.c文件中的handle_connection函数,在该函数中进行了客户端请求头的分析、服务器端的连接、以及读取服务器端信息后发往客户端(在这个过程中涉及到的函数是:read_request_line、get_all_headers、process_request、process_client_headers、process_server_headers 、relay_connection)

relay_connection中进行了往客户单输出的操作。


四 学习tinyproxy目前仍存在的问题

1.如何修改configure文件,是生成的config.h文件中自动开启反向代理功能

2.在configure生成的所有的makefile文件当中 prefix前缀值都是/usr/local,如何修改configure文件,可以使生成的makefile文件中的prefix前缀值改变,同时使tinyproxy的tinyproxy.conf、tinyproxy.log、tinyproxy.pid文件在eclipse下运行时的默认路径改变。

3.如何使用eclipse调试守护进程




你可能感兴趣的:(代理服务器学习日志(三)- Eclipse编译tinyproxy)