Cloud Hosting With Multiple Proxy Servers
Scenario
A customer had a requirement for Cloud Hosting With Multiple Proxy Servers and wanted to send some traffic direct to the internet (host or url whitelist), some hosts or urls to one proxy in their cloud hosting and some traffic via another proxy in another peered network in their cloud hosting.
Solution
Our solution in the end was simple but it does required endpoint configuration (the browsers needs to point to the pac file in order for this to work – this was configured via AD GPO for the AppStream instances in Amazon Web Services as the AppStream instances were domain joined.)
This is also supported on Windows and Mac Endpoints via the proxy autoconfiguration file.
This means we can whitelist traffic to the internet, we can send other url or hosts specific matches to various internal proxy servers and for all else we can return a proxy server that doesnt exist and if it points to 127.0.0.1 its a very quick ‘failure’ response.
The response message to the clients is not perfect (users receive ‘The Proxy Server is not responding’) but as a simple working solution this was considered tolerable.
Windows > Configure it in Internet Explorer
Mac > Configure it in Network Settings
PAC File Configuration
function FindProxyForURL(url, host) { // If the hostname matches, send direct. if (shExpMatch(host, "*.microsoft.com") || shExpMatch(host, "*.google.com")) return "DIRECT"; // If the hostname matches, send direct. if (shExpMatch(host, "*.myotherwebsite.com") || shExpMatch(host, "*.myotherwebsite2.com")) return "PROXY internal.squid.proxy:3128"; // If the hostname matches, send direct. if (shExpMatch(host, "*.myotherwebsite3.com") || shExpMatch(host, "*.myotherwebsite4.com")) return "PROXY internal.squid.proxy2:3128"; // DEFAULT RULE: All other traffic, use below proxies, in fail-over order. return "PROXY 127.0.0.1:8081"; }