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

本文介绍如何在Eclipse环境下编译并运行TinyProxy源码,重点讲解了如何开启反向代理功能,并概述了TinyProxy的工作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用eclipse编译运行tinyproxy源码

一 新建eclipse tinyproxy工程

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


点击Finish即可。

2 新建的工程如下图:



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


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

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



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调试守护进程




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风水月

从心底相信自己是成功的第一步

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值