How to Configure Proxy Rotation with HAProxy
Introduction
HAProxy is a powerful load balancer that can be used for automatic proxy rotation. It distributes requests among multiple upstream proxies.
Basic Configuration
HAProxy Installation
sudo apt install haproxy
Rotation Configuration
File /etc/haproxy/haproxy.cfg:
frontend proxy_in
bind *:8080
default_backend proxy_pool
backend proxy_pool
balance roundrobin
option httpchk GET /
server proxy1 upstream1_ip:port check
server proxy2 upstream2_ip:port check
server proxy3 upstream3_ip:port check
This configures round-robin rotation among three upstream proxies with health checks.
Load Balancing Algorithms
- roundrobin — sequential rotation
- leastconn — to the server with the fewest connections
- random — random selection
- source — client IP binding (sticky)
Advanced Configuration
Environment Variables
Most tools support standard environment variables for proxies:
- HTTP_PROXY / http_proxy — proxy for HTTP requests
- HTTPS_PROXY / https_proxy — proxy for HTTPS requests
- NO_PROXY / no_proxy — exclusion list (addresses that bypass the proxy)
- ALL_PROXY / all_proxy — proxy for all protocols
SSL and Self-Signed Certificates
Corporate proxies often use their own SSL certificates. To work through them, you need to:
1. Obtain the proxy's CA certificate from the administrator
2. Add it to the system certificate store
3. Or disable SSL verification (for testing only)
Authentication
Two main authentication methods are supported:
By username and password — standard HTTP Basic authentication. Credentials are sent with each request. URL format: http://user:pass@proxy_ip:port
By IP address (whitelist) — your IP is added to a whitelist. No credentials need to be sent.
Verification
After configuration, verify:
1. Perform a test request through the proxy
2. Ensure the IP has changed
3. Check connection speed
4. Ensure there are no DNS leaks
Troubleshooting
Proxy not connecting
- Check the address and port for correctness
- Ensure the firewall is not blocking the connection
- Check proxy accessibility from your network
SSL errors
- For corporate proxies, add the CA certificate
- For testing, temporarily disable SSL verification
- Update SSL libraries to the latest version
Authentication errors
- Check username and password
- Ensure the correct credentials format
- Try URL encoding special characters in the password
Best Practices
- Use environment variables — for flexibility and security
- Do not hardcode credentials — use environment variables or configuration files
- Configure exclusions — do not proxy localhost and internal addresses
- Document settings — in the project README or team wiki
- Test after changes — any configuration change requires verification
Conclusion
Proper proxy configuration ensures stable tool operation and connection security. Follow the recommendations in this guide and always verify functionality after setup.