Yeah, my intention was to only use Caddy. I only maintaned and ran lighttpd to see if I could reproduce it there. Since I cannot reproduce it on lighttpd, I found this to be a Caddy problem on not populating the $_SERVER array in PHP.
This is the print_r function on $_SERVER in lighttpd
Array (
[PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
[PHP_FCGI_CHILDREN] => 4
[PHP_FCGI_MAX_REQUESTS] => 10000
[PATH_TRANSLATED] => /var/www/html
[ORIG_SCRIPT_FILENAME] => /var/www/html/admin/db_queries.php/
[HTTP_X_FORWARDED_PROTO] => http
[HTTP_X_FORWARDED_HOST] => 192.168.0.3
[HTTP_X_FORWARDED_FOR] => 192.168.0.30
[HTTP_UPGRADE_INSECURE_REQUESTS] => 1
[HTTP_REFERER] => http://192.168.0.3/admin/db_queries.php
[HTTP_CACHE_CONTROL] => max-age=0
[HTTP_ACCEPT_LANGUAGE] => pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
[HTTP_HOST] => 192.168.0.3
[REMOTE_PORT] => 53512
[REMOTE_ADDR] => 127.0.0.1
[SERVER_NAME] => 192.168.0.3
[SERVER_ADDR] => 127.0.0.1
[SERVER_PORT] => 9015
[REQUEST_SCHEME] => http
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_SOFTWARE] => lighttpd/1.4.63
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[DOCUMENT_ROOT] => /var/www/html
[SCRIPT_FILENAME] => /var/www/html/admin/db_queries.php
[SCRIPT_NAME] => /admin/db_queries.php
[REDIRECT_STATUS] => 200
[REQUEST_URI] => /admin/db_queries.php
[QUERY_STRING] =>
[CONTENT_LENGTH] => 0
[FCGI_ROLE] => RESPONDER
[PHP_SELF] => /admin/db_queries.php
[REQUEST_TIME_FLOAT] => 1658163472.3519
[REQUEST_TIME] => 1658163472
)
And in Caddy:
Array (
[USER] => www-data
[HOME] => /var/www
[SERVER_PROTOCOL] => HTTP/1.1
[REMOTE_HOST] => 192.168.0.30
[QUERY_STRING] =>
[HTTP_X_FORWARDED_PROTO] => http
[SERVER_PORT] => 81
[REMOTE_USER] =>
[REMOTE_PORT] => 55889
[GATEWAY_INTERFACE] => CGI/1.1
[SCRIPT_NAME] => /admin/index.php
[REQUEST_URI] => /admin/
[DOCUMENT_ROOT] => /var/www/html
[HTTP_ACCEPT_LANGUAGE] => pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7
[SCRIPT_FILENAME] => /var/www/html/admin/index.php
[REQUEST_METHOD] => GET
[HTTP_REFERER] => http://192.168.0.3:81/
[SERVER_SOFTWARE] => Caddy/v2.5.2
[REQUEST_SCHEME] => http
[CONTENT_TYPE] =>
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
[HTTP_HOST] => 192.168.0.3:81
[DOCUMENT_URI] => /admin/index.php
[REMOTE_ADDR] => 192.168.0.30
[PATH_INFO] =>
[CONTENT_LENGTH] => 0
[HTTP_X_FORWARDED_FOR] => 192.168.0.30
[HTTP_X_FORWARDED_HOST] => 192.168.0.3:81
[SERVER_NAME] => 192.168.0.3
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[REMOTE_IDENT] =>
[AUTH_TYPE] =>
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
[HTTP_UPGRADE_INSECURE_REQUESTS] => 1
[FCGI_ROLE] => RESPONDER
[PHP_SELF] => /admin/index.php
[REQUEST_TIME_FLOAT] => 1658163666.311
[REQUEST_TIME] => 1658163666
)
I found this issue in Caddy that is related and suggests a fix for passing an environment variable:
https://github.com/caddyserver/caddy/issues/2952
After modifying my Caddyfile to add the environment variable, Pi-hole works fine now. Leaving here if any other users face the same problem:
root * /var/www/html
php_fastcgi unix//run/php/php-fpm.sock {
env SERVER_ADDR {host}
}
file_server browse
I used {host} instead of a fixed value as this value is used for CORS validation.
Yeah, and have a fix 