#!/usr/bin/env python3 import http.server import http.client import socketserver PORT = 8000 PROXY_PORT = 8080 class ProxyRequestHandler(http.server.SimpleHTTPRequestHandler): def do_GET(self): # Forward GET request to the proxy port with "/site" appended to the path if self.path == '/' or self.path.startswith("/?"): url = 'http://localhost:{}{}'.format(PROXY_PORT, '/site' + self.path) else: url = 'http://localhost:{}{}'.format(PROXY_PORT, self.path) headers = dict(self.headers) del headers['Host'] # Remove "Host" header to avoid "HTTP/1.1 400 Bad Request" error conn = http.client.HTTPConnection('localhost', PROXY_PORT) conn.request('GET', url, headers=headers) response = conn.getresponse() self.send_response(response.status) for header, value in response.getheaders(): self.send_header(header, value) self.end_headers() self.wfile.write(response.read()) if __name__ == '__main__': # Start the HTTP server with socketserver.TCPServer(("", PORT), ProxyRequestHandler) as httpd: print("Server running on port", PORT) httpd.serve_forever()