← Cloudflare One / cloudflare-one / networks / resolvers-and-proxies / proxy-endpoints
Osvědčené postupy pro soubory PAC
Soubor PAC je textový soubor, který určuje, jaký provoz se má přesměrovat na proxy server. Když prohlížeč vytvoří webový požadavek, podívá se do souboru PAC na jeho FindProxyForURL() funkci, která vyhodnotí požadavek a vrátí pokyny pro směrování, například přímé připojení, proxy server nebo sekvenci failover.
Formát souboru PAC
Výchozí soubor PAC Cloudflare má standardní formát:
function FindProxyForURL(url, host) {
// No proxy for private (RFC 1918) IP addresses (intranet sites)
if (
isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||
isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") ||
isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0")
) {
return "DIRECT";
}
// No proxy for localhost
if (isInNet(dnsResolve(host), "127.0.0.0", "255.0.0.0")) {
return "DIRECT";
}
// Proxy all
return "HTTPS 3ele0ss56t.proxy.cloudflare-gateway.com:443";
}Můžete přizpůsobit soubor PAC ↗ a umístěte jej někam, kam má váš prohlížeč přístup.
Úvahy o formátování
- Ujistěte se, že direktiva použitá pro endpoint je
HTTPSa nePROXY. Například:- Správně:
return "HTTPS your-subdomain.proxy.cloudflare-gateway.com:443"; - Nesprávně:
return "PROXY your-subdomain.proxy.cloudflare-gateway.com:443";
- Správně:
- Místo přímé konfigurace endpointu v nastavení proxy prohlížeče musíte použít soubor PAC. Moderní prohlížeče nepodporují HTTPS proxy bez souborů PAC.
- Použijte editor prostého textu, například VS Code, abyste se vyhnuli nežádoucím znakům.
- Pokud pro procházení veřejného internetu používáte soubory PAC (nejen pro interní služby), přečtěte si Časté pravidla pro obcházení pro domény, které možná budete muset vyloučit z proxy, aby nedocházelo k problémům s funkčností webu.
Šablona souboru PAC s obejitím poskytovatele identity
Při použití autorizační endpointy, musíte v souboru PAC obejít domény poskytovatele identity (IdP). Tím zabráníte smyčkám ověřování, kdy se prohlížeč pokouší ověřit u proxy dříve, než se dostane k IdP a ověří se tam.
Následující ukázkový soubor PAC je komplexní šablona, která zahrnuje běžná pravidla pro obejití IdP. Nahraďte zástupné hodnoty svou konfigurací:
function FindProxyForURL(url, host) {
// *** Identity Provider Bypass ***
// CRITICAL: Bypass your IdP to prevent authentication loops
// Uncomment and configure the section for your IdP:
// Okta
// if (host === "your-domain.okta.com" || shExpMatch(host, "*.oktacdn.com")) {
// return "DIRECT";
// }
// Microsoft Entra ID (Azure AD)
// if (
// host === "login.microsoftonline.com" ||
// host === "aadcdn.msauth.net" ||
// host === "aadcdn.msftauth.net"
// ) {
// return "DIRECT";
// }
// Google Workspace
// if (
// host === "accounts.google.com" ||
// shExpMatch(host, "*.gstatic.com")
// ) {
// return "DIRECT";
// }
// GitHub
// if (shExpMatch(host, "*.github.com")) {
// return "DIRECT";
// }
// *** Private Networks ***
// Bypass private RFC 1918 IP addresses
if (
isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||
isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") ||
isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0")
) {
return "DIRECT";
}
// Bypass localhost
if (isInNet(dnsResolve(host), "127.0.0.0", "255.0.0.0")) {
return "DIRECT";
}
// Bypass plain hostnames (no dots)
if (isPlainHostName(host)) {
return "DIRECT";
}
// Bypass .local domains
if (shExpMatch(host, "*.local")) {
return "DIRECT";
}
// *** Cloudflare Access Logout ***
// Optional: Redirect logout requests to your Access logout page
// if (shExpMatch(url, "*logout*")) {
// return "HTTPS your-team-name.cloudflareaccess.com/cdn-cgi/access/logout";
// }
// *** Proxy all other traffic ***
return "HTTPS your-subdomain.proxy.cloudflare-gateway.com:443";
}Optimalizace výkonu
Prohlížeče vyhodnocují soubory PAC při každém požadavku. Optimalizace výkonu souborů PAC je klíčová, aby uživatelům nevznikaly zpoždění a problémy při procházení webu.
Mezipaměť výsledků DNS v proměnných
Při provádění překladu DNS pomocí dnsResolve(), uložte výsledek do proměnné, abyste ho mohli znovu použít napříč více kontrolami. Tím se předejde zbytečným DNS dotazům:
function FindProxyForURL(url, host) {
// Resolve once and reuse
var hostIP = dnsResolve(host);
if (isInNet(hostIP, "10.0.0.0", "255.0.0.0")) {
return "DIRECT";
}
// Reuse hostIP for additional checks
if (isInNet(hostIP, "172.16.0.0", "255.240.0.0")) {
return "DIRECT";
}
return "HTTPS proxy.example.com:443";
}Nejprve zkontrolujte obyčejné hostname
Názvy NetBIOS (hostitelské názvy bez teček) jsou obvykle interní a měly by obcházet proxy. Nejprve zkontrolujte tyto:
if (isPlainHostName(host)) return "DIRECT";Pokročilé techniky
Zpracování rozlišování velkých a malých písmen
JavaScript rozlišuje velká a malá písmena. Pro konzistentní porovnávání převádějte názvy hostitelů na malá písmena:
function FindProxyForURL(url, host) {
// Normalize to lowercase
host = host.toLowerCase();
url = url.toLowerCase();
if (shExpMatch(host, "*.example.com")) {
return "DIRECT";
}
return "HTTPS proxy.cloudflare-gateway.com:443";
}Časté pravidla pro obcházení
Pokud používáte soubory PAC i pro procházení veřejného internetu, a ne jen interních služeb, může být pro některé domény potřeba proxy obejít, aby nedocházelo k problémům s funkčností webu. Následují typické scénáře, kdy může proxy zasahovat do provozu.
Poskytovatelé fontů a statického obsahu
Poskytovatelé Font API a statického obsahu by obvykle měli obcházet proxy, aby se předešlo problémům s vykreslováním:
// Bypass font providers
if (
shExpMatch(host, "*.googleapis.com") ||
shExpMatch(host, "*.gstatic.com") ||
shExpMatch(host, "fonts.adobe.com")
) {
return "DIRECT";
}Streamování a mediální služby
Streamování videa a stahování rozsáhlých mediálních souborů může fungovat lépe s přímými připojeními:
// Bypass streaming services
if (
shExpMatch(host, "*.netflix.com") ||
shExpMatch(host, "*.youtube.com") ||
shExpMatch(host, "*.googlevideo.com")
) {
return "DIRECT";
}Aplikace s připnutím certifikátu
Když je zapnutá kontrola HTTPS, aplikace a služby, které používají připnutí certifikátu (certificate pinning), odmítnou certifikát vložený Cloudflare a při směrování přes proxy se nenačtou. Tyto domény obejděte ve svém souboru PAC:
// Bypass certificate-pinned apps
if (
shExpMatch(host, "*.example-bank.com") ||
shExpMatch(host, "*.example-pinned-app.com")
) {
return "DIRECT";
}zásady Do Not Inspect (DNI) nezabrání chybám certificate pinning u těchto připojení, je nutné v souboru PAC obejít aplikace využívající certificate pinning.
Testování souborů PAC
Otestujte pomocí očekávaných webů
Před nasazením souboru PAC všem uživatelům ve vaší organizaci ho otestujte s weby a aplikacemi, které vaši uživatelé běžně používají. Pomůže vám to zajistit:
- Interní prostředky jsou dostupné a nejsou nesprávně směrovány přes proxy
- Externí weby jsou správně filtrovány prostřednictvím Gateway
- Výkon je při typickém způsobu používání dostačující
Ověřit syntaxi
Soubory PAC používají syntaxi JavaScriptu. Jediná syntaktická chyba (například chybějící uzavírací závorka ) nebo závorku ]) způsobí selhání celého souboru PAC. Před nasazením použijte textový editor s podporou JavaScriptu, abyste našli a opravili syntaktické chyby.
Odstraňování problémů s konfiguracemi
Ladění směrovacích rozhodnutí souboru PAC
Pokud máte problém se směrováním přes proxy, většina prohlížečů nabízí nástroje pro ladění, kterými můžete ověřit chování souboru PAC:
Prohlížeče založené na Chromiu (Chrome, Edge, Brave)
- V prohlížeči přejděte na
chrome://net-export/(neboedge://net-export/). - Vyberte Spustit protokolování na disk.
- Přejděte na web, který chcete otestovat v postiženém prohlížeči.
- Vyberte Zastavit protokolování.
- Otevřete stažený soubor pomocí netlog-viewer ↗.
- Vyhledejte svou doménu a zobrazte rozhodnutí o rozlišení proxy.
Firefox
- Ve Firefoxu přejděte do Nástroje > Nástroje prohlížeče > Konzole prohlížeče.
- Přejděte na web, který chcete otestovat v postiženém prohlížeči.
- Vyhledejte zprávy týkající se překladu proxy.
Safari
- V Safari přejděte do Safari > Nastavení, pak vyberte Pokročilé.
- Zapněte Zobrazit nabídku Vývoj v panelu nabídek.
- Vyberte Vývoj > Zobrazit Web Inspector.
- Přejděte na Síť kartě.
- Zkontrolujte podrobnosti požadavku a ověřte použití proxy.
Procházení na zařízení pomocí souboru PAC je pomalé
Nadměrný počet vyhledávání DNS v souboru PAC může způsobit zpoždění. Zkontrolujte svůj soubor PAC a omezte používání dnsResolve(), isInNet(), a isResolvable() funkce.
Prohlížeč ukládá soubory PAC do mezipaměti nesprávně
Když aktualizujete soubor PAC, prohlížeče mohou nadále používat verzi uloženou v mezipaměti, což způsobí neočekávané chování. Po aktualizaci souboru PAC vymažte mezipaměť prohlížeče a prohlížeč restartujte, aby se zajistilo použití nejnovější verze.