На что ругается nginx?
nginx ругается на && потому что логическое and и or не поддерживаются в директиве if.
Это как раз одна из многих причин, почему map просто придётся использовать :)
На глаз if ($http_referer != "demo.company.ru" && $remote_addr != 192.168.88.0/24) должен быть в блоке server, а не location.