displaying standard 404 page, if php file is not found

Samuel Vogel samydelux at gmail.com
Wed Jul 29 19:26:12 MSD 2009


Am 29.07.09 17:00, schrieb Igor Sysoev:
> On Wed, Jul 29, 2009 at 04:53:43PM +0200, Samuel Vogel wrote:
>
>    
>> Am 29.07.09 16:12, schrieb Edho P Arief:
>>      
>>> On Wed, Jul 29, 2009 at 9:03 PM, Samuel Vogel<samydelux at gmail.com>   wrote:
>>>
>>>        
>>>> Hey,
>>>>
>>>> I know this question has come up a couple of times, but the solutions
>>>> posted
>>>> here do not seem to work for me!
>>>> Here is the important part of my configuration:
>>>>
>>>>     location ~ \.php$ {
>>>>         try_files  $uri  @404;
>>>>
>>>>         fastcgi_pass   unix:/var/run/php-fpm/domain.sock;
>>>>         fastcgi_index  index.php;
>>>>         fastcgi_param  SCRIPT_FILENAME  www/$fastcgi_script_name;
>>>>         include fastcgi_params;
>>>>     }
>>>>
>>>>     location @404 {
>>>>         return 404;
>>>>     }
>>>>
>>>> This returns a 404 error for every PHP file, even existing ones!
>>>>
>>>>
>>>>          
>>> where did you set the root directive? in another location block or in
>>> server block?
>>>
>>> also I don't remember ever seeing relative path for script_filename
>>>        
>> It's not relative, php ist just chrootet to /var/www/domain/.
>>
>> Here is my complete configuration:
>> server {
>>      listen   80;
>>      server_name  domain.de;
>>
>>      access_log  /var/log/nginx/domain.access.log;
>>
>>      location / {
>>          root   /var/www/domain/www;
>>          index  index.html index.php;
>>      }
>>
>>      location ~ \.php$ {
>>          try_files  $uri  @404;
>>      
> +         root   /www;
>
>    
>>          fastcgi_pass   unix:/var/run/php-fpm/domain.sock;
>>          fastcgi_index  index.php;
>>          fastcgi_param  SCRIPT_FILENAME  /www/$fastcgi_script_name;
>>          include fastcgi_params;
>>      }
>>
>>      location @404 {
>>          return 404;
>>      }
>>
>>      location ~ /\.ht {
>>          deny  all;
>>      }
>> }
>>      
Doesn't seem to fix the problem either. My config now reads:

server {
     listen   80;
     server_name  domain.de;

     access_log  /var/log/nginx/domain.access.log;

     location / {
         root   /var/www/domain/www;
         index  index.html index.php;
     }

     location ~ \.php$ {
         try_files  $uri  @404;
         root /www;

         fastcgi_pass   unix:/var/run/php-fpm/domain.sock;
         fastcgi_index  index.php;
         fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
         include fastcgi_params;
     }

     location @404 {
         return 404;
     }

     location ~ /\.ht {
         deny  all;
     }
}





More information about the nginx mailing list