Nginx: algumas configurações adicionais para frameworks e SSL
Saudações, dando continuidade ao último post segue uma série de configurações para o Nginx.
SSL, Gerar as chaves com o comando
openssl req -new -x509 -days 365 -nodes -out /etc/httpd/ssl/teste.pem -keyout /etc/httpd/ssl/teste.key
(Em caso de dúvida ver esse post .)
Na configuração do VirtualHost que coloquei em /etc/nginx/sites-available/teste.inet colocar as linhas:
server
{
...
listen 443;
ssl on;
ssl_certificate /etc/httpd/ssl/teste.pem;
ssl_certificate_key /etc/httpd/ssl/teste.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
...
}
Se o framework trata páginas não encontradas (erro 404) como o Zend Framework, o Codeigniter entre outros então direcionamos a requisição para a index.php
server
{
...
error_page 404 /index.php;
...
}
Frameworks como o Codeigniter e o Zend Framework por exemplo tem requisições direcionadas para controllers então devemos definir uma regra para a rota principal.
server
{
...
if ($request_uri ~* ^(/bemvindo(/index)?|/index(.php)?)/?$)
{
rewrite ^(.*)$ / permanent;
}
...
}
Neste caso quando acessarmos http://teste.inet ele vai direcionar de maneira adequada para http://teste.inet/bemvindo/index além de tratar as chamadas diretas em cima dos métodos (exemplo: http://teste.inet/auth/login) de maneira correta.
Remove o método padrão index quando um método de um controller não é invocado.
server
{
...
if ($request_uri ~* index/?$)
{
rewrite ^/(.*)/index/?$ /$1 permanent;
}
...
}
Negando acesso aos arquivos .htaccess do apache.
server
{
...
location ~ /\.ht
{
deny all;
}
...
}
Se a chamada não for em arquivos estáticos como imagem, scripts, ou folhas de estilos direcionamos para o index do framework
server
{
...
if (!-e $request_filename)
{
rewrite ^/(.*)$ /index.php?/$1 last;
break;
}
...
}
Com essas regrinhas acima já consegui trabalhar tranquilo com os frameworsks Zend, Codeigniter e Kohana.
Próximos passos:
- fazer debug de código e profile usando Xdebug;
- testar funcionamento de módulos do php como php-stemmer;
- separar versões diferentes de php em virtual hosts diferentes.
Até a próxima