Contudo, a troca do Apache pelo nginx, trazia um problema. O SEF do Joomla! não funciona nativamente no nginx, porque as regras de redirecionamento de URL's do Joomla! se baseiam no Apache. Para minha felicidade, a solução é bem simples e estava disponível no wiki do nginx.
Mas, faltava ainda o trecho do .htaccess do Joomla!, que bloqueava ataques ao site. Mais uma vez, alguém já tinha pensado nisso e disponibilizado a solução. Portanto, bastou foi juntar as duas soluções:
server {
listen 80;
server_name mysite.com www.mysite.com;
access_log /var/log/nginx/mysite.com-access.log;
error_log /var/log/nginx/mysite.com-error.log;
large_client_header_buffers 4 8k; # prevent some 400 errors
root /var/www/mysite.com/html;
index index.php;
location / {
expires 30d;
error_page 404 = @joomla;
log_not_found off;
}
location @joomla {
rewrite ^(.*)$ /index.php?q=$1 last;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:8888;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
if ( $args ~ "mosConfig_[a-zA-Z_]{1,21}(=|\%3d)” ) {
set $args “”;
rewrite ^.*$ http://$host/index.php last;
return 403;
}
if ( $args ~ “base64_encode.*\(.*\)” ) {
set $args “”;
rewrite ^.*$ http://$host/index.php last;
return 403;
}
if ( $args ~ “(\<|%3C).*script.*(\>|%3E)” ) {
set $args “”;
rewrite ^.*$ http://$host/index.php last;
return 403;
}
if ( $args ~ “GLOBALS(=|\[|\%[0-9A-Z]{0,2})” ) {
set $args “”;
rewrite ^.*$ http://$host/index.php last;
return 403;
}
if ( $args ~ “_REQUEST(=|\[|\%[0-9A-Z]{0,2})” ) {
set $args “”;
rewrite ^.*$ http://$host/index.php last;
return 403;
}
}
Agora meu site, com tudo que tem direito (nginx, MySQL, PHP, FTP e SVN), roda em um VPS OpenVZ com 128MB de RAM. Incrível não ?



Designed by joomlaxe