A multithreaded HTTP/HTTPS proxy server.
- HTTP Version
- supported
HTTP/1.1
- supported
- Request
- maximum size of 65536 bytes
- supported methods:
GET
,POST
,CONNECT
- supported headers:
Accept-Encoding
- Response
- supported headers:
Content-Length
,Date
,Last-Modified
,Etag
,Expires
,Transfer-Encoding
,Cache-Control
- supported transfer encodings:
chunked
- supported headers:
- Caching
- response caching with FIFO replacement policy
- supported methods:
GET
- supported status codes:
200 OK
- supported
Cache-Control
entries for cacheability and validation:private
,public
no-store
,no-cache
,must-revalidate
,max-age
- OS: Linux / MacOS
- C++ verison: C++20
- tools: cmake3.7+
- Packages: pthread, GoogleTest, gcov, lcov
The process runs on port 8080
mkdir build
cd build
cmake ..
make -j
./unit_tests # optional, unit testing
./http-proxy
The docker container exposes port 8080
sudo mkdir -p /var/log/http-proxy # create log folder on host
sudo chown 1000:1000 /var/log/http-proxy # change owner, so can be mounted by docker
docker-compose build
docker-compose up -d
- refactored codebase for better readability and extensibility
- added GoogleTest unit testing infrastructure
- migrated build infrastructure from
make
tocmake
- used
C++20
for easier support for multithreading, locking and memory management, and access to high-level libraries - improved error handling and memory management
- running in docker results in network degradation,
CONNECT
requests are intermittently unreachable