Networking

使用 PAC 文件配置 Squid 代理

  • September 29, 2019

所以我在我的 ec2 實例上安裝並執行了 squid 代理伺服器。我的任務是讓任何 pc 客戶端在訪問某些站點時僅連接到代理,並且將使用正常 wifi 連接進行其他所有操作。諸如白名單之類的東西,或者僅對某些特定站點使用代理而不是其他任何東西。

這樣的事情有可能實現嗎?

非常感謝任何幫助或指導。

乾杯!

是的,這是典型的 PAC 文件用法,請查看以下範常式式碼:

function FindProxyForURL(url, host) {

// If the hostname matches, send to the proxy.
   if (dnsDomainIs(host, "exampldomain.com") ||
       shExpMatch(host, "(*.abcdomain.com|abcdomain.com)"))
       return "PROXY 1.2.3.4:8080";


// DEFAULT RULE: All other traffic, send direct.
   return "DIRECT";

}

dnsDomainIs 和 shExpMatch 是檢查域名是否匹配的兩個函式,dnsDomainIs 評估主機名並在主機名匹配時返回 true。主要用於匹配和排除單個主機名。shExpMatch 將嘗試將主機名或 URL 匹配到指定的 shell 表達式,如果匹配則返回 true。

如果您想讓使用者在無法訪問代理的情況下嘗試直接連接,那麼您需要修改此行:

return "PROXY 1.2.3.4:8080";

成為:

return "PROXY 1.2.3.4:8080; DIRECT";

引用自:https://serverfault.com/questions/985916