<?php // public.php - gets user IP and fetches external data $ip = $_SERVER['REMOTE_ADDR']; $geo = file_get_contents("https://ipapi.co/$ip/json/"); echo $geo; ?> If AdGuardNet blocks ipapi.co (a known tracking/IP service), public.php will fail — not because of your code, but because of the filter. 1. DNS Blocking of External Dependencies Many PHP scripts call out to third-party APIs. AdGuard’s default blocklists include many ad/tracker domains. If your public.php uses google-analytics.com , facebook.com/tr , or even some CDNs, the DNS request fails. 2. Filtering by URL Patterns AdGuard’s URL blocking looks for patterns like */public.php?* or */analytics/* . If your script’s endpoint matches, AdGuardNet drops the request. 3. TLS Inspection (only in AdGuard for Windows/Linux) When “Filter HTTPS” is enabled, AdGuard can see the full URL path inside encrypted traffic. This can block specific PHP endpoints even if the domain is not on a DNS blocklist. Making “tbrg” + “adguardnet” + “publicphp” Work: Step-by-Step Step 1: Identify What’s Being Blocked Check AdGuard’s query log (AdGuard Home or AdGuard DNS). Look for public.php or the domain where tbrg lives.
If you’re still stuck, visit the AdGuard GitHub Discussions and search for “PHP script blocked” – you’ll find your exact scenario, possibly even with “tbrg” as a local naming convention. This article is part of the TBG Developer Series — bridging privacy tools with web development workflows. tbrg adguardnet publicphp work
It is important to clarify upfront that is not a standard, recognized keyword phrase in any official documentation for AdGuard, AdGuardNet, or standard web development frameworks. Filtering by URL Patterns AdGuard’s URL blocking looks
Add to :
PHP works, AdGuard continues blocking other tracking. Common Errors and Fixes | Error in PHP log | Likely Cause | Fix in AdGuardNet | |----------------|--------------|--------------------| | failed to open stream: Connection refused | External API DNS blocked | Allowlist API domain | | ModSecurity: Access denied with code 403 | AdGuard URL filter | Use @@ exception rule | | empty response from server | HTTPS filtering stripping content | Disable “Filter HTTPS” for your domain | | session_start(): headers already sent | AdGuard injects header? | Rare — clear cache, check custom rules | Advanced: Running PHP Work Inside a TBG VPN Container If “tbrg” is a literal container name (e.g., tbrg-adguardnet-publicphp ), you might run AdGuard Home inside Docker alongside PHP-FPM. add allow rule via AdGuardHome API:
version: '3' services: adguardhome: image: adguard/adguardhome ports: - "53:53/tcp" - "53:53/udp" tbrg-php: image: php:8.3-fpm volumes: - ./public.php:/var/www/public.php Then set your system DNS to the AdGuardHome container IP. Inside public.php , query a blocked domain; it will fail. To fix, add allow rule via AdGuardHome API: