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-Controlentries for cacheability and validation:private,publicno-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
maketocmake - used
C++20for 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,
CONNECTrequests are intermittently unreachable