Tengo un cliente que está renovando su tienda online con Magento y este trabajo se lo dieron a un Estudio para que fuera una realidad, la cosa que estos muchachos me comentaron que cuando hacían un cambio en un archivo el mismo no reflejaba cuando visitan el sitio web.

Me conecte por SSH, modifique el archivo en cuestión y tal cual no reflejaba, me fije los permisos y nada, todo estaba correcto, entonces? bueno me puse a probar unas cuantas cosas, entre ellas…

  • El archivo de configuración de NGINX, estaba bien, por lo menos a primera vista no se notaba nada raro.
  • El problema no se arreglaba al reiniciar el servicio (service nginx restart) por las dudas que NGINX estuviese haciendo Cache por algún lado.
  • El archivo del host (/etc/nginx/sites-available/default) parecía estar correcto.
  • Cuando reiniciaba el servidor, luego tomaba los cambios.
  • Deshabilite el balanceador de carga y el cache del mismo.

Nada funcionaba, excepto reiniciar el servidor, que no es para nada viable como solución. ¿Entonces?

Entonces me puse a investigar y lo único que encontraba eran casos similares en foros pero con respuestas del tipo NGINX no hace caching, lo cual, es correcto, así que, revisando los errores más comunes en NGINX (En inglés) me pare en la sección donde dice **Root Inside Location Block **y comparé mi archivo default (/etc/nginx/sites-available/default) ví que la única diferencia era el nombre del sitio web, porque cuando se implemento por primera vez se uso un subdominio, así que lo corregí, probe nuevamente en hacer un cambio a ver si lo reflejaba y… nada.

Por último me puse a revisar el archivo de configuración de NGINX (/etc/nginx/nginx.conf) y a primera vista no veía nada raro pero por si acaso, agarre un archivo de configuración sin tocar, lo comparé, claramente había algunas diferencias, así que hice un Backup de ese archivo (aprendiendo la lección) y escribí uno nuevo con una config por defecto, aunque, solo lo que hice fue cambiar la variable sendfile a off porque también había leido que era recomendable desactivar sendfile cuando pasa esto y sobre todo en ámbientes virtualizados con VirtualBox aunque no era el caso, ya que Rackspace usa Xen.

La cosa que puse el archivo por default, desactive sendfile, guarde, tire un service nginx restart y wala! comenzo a reflejar los cambios sin ningún tipo de problemas. Así que ahora ya tenés una pista donde mirar cuando te suceda que NGINX no refleja los cambios sobre tus archivos php, porque eso es lo gracioso, solamente pasaba sobre los archivos dinámicos, más no con los estáticos como un html. raro.

Les dejo el archivo de configuración de NGINX por defecto por si lo necesitan:

userwwwwww;## Default: nobodyworker_processes5;## Default: 1error_loglogs/error.log;pidlogs/nginx.pid;worker_rlimit_nofile8192;events{worker_connections4096;## Default: 1024}http{includeconf/mime.types;include/etc/nginx/proxy.conf;include/etc/nginx/fastcgi.conf;indexindex.htmlindex.htmindex.php;default_typeapplication/octet-stream;log_formatmain'$remote_addr-$remote_user[$time_local]$status''"$request"$body_bytes_sent"$http_referer"''"$http_user_agent""$http_x_forwarded_for"';access_loglogs/access.logmain;sendfileon;tcp_nopushon;server_names_hash_bucket_size128;# this seems to be required for some vhostsserver{# php/fastcgilisten80;server_namedomain1.comwww.domain1.com;access_loglogs/domain1.access.logmain;roothtml;location~.php${fastcgi_pass127.0.0.1:1025;}}server{# simple reverse-proxylisten80;server_namedomain2.comwww.domain2.com;access_loglogs/domain2.access.logmain;# serve static fileslocation~^/(images|javascript|js|css|flash|media|static)/{root/var/www/virtual/big.server.com/htdocs;expires30d;}# pass requests for dynamic content to rails/turbogears/zope, et allocation/{proxy_passhttp://127.0.0.1:8080;}}upstreambig_server_com{server127.0.0.3:8000weight=5;server127.0.0.3:8001weight=5;server192.168.0.1:8000;server192.168.0.1:8001;}server{# simple load balancinglisten80;server_namebig.server.com;access_loglogs/big.server.access.logmain;location/{proxy_passhttp://big_server_com;}}}</code

Contame ¿Pudiste resolverlo?