Nginx: expira cabeçalho torna-se 404

4

Estou com problemas com o cabeçalho de expiração. Quando eu definir o prazo de validade e acessar o arquivo através do navegador, ele se torna Not Found 404.

Aqui está a configuração do meu servidor virtual no nginx.conf

server {
listen 80;
server_name blgourl.com www.blogourl.com

  location / {
      root    /data/file/static/blogourl;
      index   index.html index.htm index.php;
  }

  location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {
      expires 30d;
      add_header Pragma public;
      add_header Cache-Control "public";
  }


  location ~* \.php$ {
  ssi on;
  root /data/file/static;
  fastcgi_param HTTP_USER_AGENT  $http_user_agent;
  fastcgi_index   index.php;
  #fastcgi_pass    127.0.0.1:9000;
  #fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
  fastcgi_pass   unix:/var/run/php-fpm.sock;
  include         fastcgi_params;
  fastcgi_param   SCRIPT_FILENAME    /data/file/static/blogourl$fastcgi_script_name;
  fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;

  }

}
    
por Maca 20.08.2014 / 09:26

1 resposta

7

Como Alexey Ten disse, a raiz dentro da localização é ruim porque você deve definir o parâmetro root dentro de cada diretiva de localização. E se esquecer de adicionar o root em um dos seus locais, o nginx definirá root como padrão /etc/nginx/html

Em vez disso, você deve definir raiz fora de sua localização , por exemplo na diretiva do servidor. Você sempre pode adicionar root em sua localização sempre que seu diretório raiz for alterado. Por exemplo, na sua configuração, você pode substituir o parâmetro root dentro de location ~* \.php$

Veja também esta discussão sobre raiz dentro da localização

Sua configuração deve ser

  root    /data/file/static/blogourl;
  location / {
      index   index.html index.htm index.php;
  }

  location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {
      expires 30d;
      add_header Pragma public;
      add_header Cache-Control "public";
  }


  location ~* \.php$ {
      ssi on;
      root /data/file/static;
      fastcgi_param HTTP_USER_AGENT  $http_user_agent;
      fastcgi_index   index.php;
      #fastcgi_pass    127.0.0.1:9000;
      #fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
      fastcgi_pass   unix:/var/run/php-fpm.sock;
      include         fastcgi_params;
      fastcgi_param   SCRIPT_FILENAME    /data/file/static/blogourl$fastcgi_script_name;
      fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;

  }
    
por 20.08.2014 / 12:10

Tags