EDIT: Esta resposta é provavelmente errada.
Se o seu /admin/
é normalmente fornecido com PHP via FastCGI, então o problema é que o bloco de localização que você mostrou acima substitui o bloco de localização padrão para scripts PHP.
No nginx, os blocos de localização não são encadeados, o bloco de localização mais preciso é usado para uma solicitação. Locais com expressões regulares (como location ~ \.php$
) têm menos preferência do que blocos de localização mais específicos, como você especifica acima.
Outro ponto problemático pode ser que esse bloco de localização substitui um bloco geral de reescrita de URLs.