Neste final de semana, eu quis trocar meu servidor web de Apache para NGINX. A instalação foi fácil, a configuração básica foi fácil, mas tive um “pequeno grande” problema com o CakePHP… Não aparecia nada na minha tela, ou aparecia um erro 500. O que fazer agora?

Tanto CakePHP quanto WordPress foram projetados para trabalhar com Apache, pois eles vêm com alguns .htaccess prontos para nós. Meu desafio era justamente esse! Reescrever o .htaccess do CakePHP para que o NGINX trabalhasse da mesma forma que o Apache estava trabalhando.

Abrindo o .htaccess do diretório raiz do CakePHP, temos:

Abrindo o .htaccess do diretório /app:

E por último, o .htaccess do diretório /app/webroot:

Observando essas regras, a lógica que eu entendi foi: RAIZ DIRECIONA PARA APP, QUE DIRECIONA PARA WEBROOT, QUE TRATA A URL. Então eu escrevi uma regra para que o NGINX fizesse a mesma coisa. Lembrando que meu projeto do CakePHP estava em um subdiretório da raiz do meu servidor web, portanto se a raiz do servidor era public_html, meu projeto era um subdiretório em public_html. Suponhamos que o nome dele seja foobar, as regras ficaram assim:

Se alguém souber de uma maneira melhor, compartilhe nos comentários… Recomendo muito a leitura deste link: http://wiki.nginx.org/Pitfalls

16 thoughts on “Rewrite do NGINX para CakePHP

  1. Disculpen necesito ayuda soy estudiante de I.S.C de 5 semestre necesito ayuda en la reglas que usa nginx no me las se y he buscando en google pero no he tenido éxito alguno me gustaria que me podrian enviar o darme no se una url donde pueda tener acceso a esas reglas, cuales son y para que sirve.

  2. Good Job Heitor!

    I’m still trying to figure out a way to fix CakePHP2 baseurl for static files, as css and images. My page returns /foobar/css/cake.generic.css instead of /foobar/app/webroot/css/cake.generic.css. I’m starting on version 2.2.4.

    Thanks, Marcelo

    1. Hi Heitor,

      I found my error. I had a specific location for static files, which I setup when I installed nginx for the first time according to http://www.howtoforge.com/installing-php-5.3-nginx-and-php-fpm-on-ubuntu-debian:

      Just commented that section and everything works ok now.

      Have a NIce Day!

      1. Marcelo,

        to treat static files, we can use this:

        I guess it’s a better approach to performance!

        What you think?

    1. Então Pedro, a configuração que eu uso é essa do Post mesmo… Como que é a URL do seu projeto, e como que o Cake gera a url dos css, js e imagens? Como que você está chamando essas coisas no código? Cria também um gist da sua configuração de NGINX para eu ver…

  3. Olá Heitor.

    Não consigo fazer Rewrite funcionar no Nginx com Cakephp 3.
    Meu projeto está em uma subpasta na raiz e a parte do rewrite está assim:

    Poderia me ajudar?

    1. Olá Diego! Tudo bem?

      Desculpe a demora para responder… instalei um CakePHP 3.2 só para poder te falar o que fazer, e minha configuração final ficou assim:

      Só com isto, já funcionou!

      1. Com esta configuração os so funciona a index, o controller pages por exemplo nao, por padrao ao acessado a url retorna pra index, mas não é isso que acontece

        1. Leandro,
          testei com a mesma configuração que faço pro Laravel, e funcionou legal desta vez:

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *