Nginx e PHP-FPM 403 Proibido

1

Estou usando o Nginx com o PHP-FPM. A página solicitada é exibida, mas o firebug mostra que os caminhos para o CSS, JS e as imagens estão retornando 403 Erro proibido que quebra o estilo.

Analisando os registros:

013/03/09 21:15:43 [error] 1012#0: *17 FastCGI sent in stderr: "Access to the script '/var/www/my_server/extras/extras/go/_common/imgs/WebLogo2-trans.png' has been denied (see security.limit_extensions)" while reading response header from upstream, client: 33.33.33.1, server: my-server.com, request: "GET /extras/extras/go/_common/imgs/WebLogo2-trans.png HTTP/1.1", upstream: "fastcgi://unix:/var/tmp/php-fpm.sock:", host: "www.my-server.com", referrer: "http://www.my-server.com/extras/better/"

No entanto, tentei definir security.limit_extensions = .php .css .js .jpg apenas para ver o que acontece, mas o tipo MIME é interpretado como text / html e não é carregado.

Eu tentei chmod 777 todos os arquivos e diretórios, mas sem sorte.

Aqui está o bloco do servidor Nginx: link e o bloco de localização relevante. O bloco de localização é incluído em outro arquivo que não é refletido no bloco do servidor:

     location /extras/ {
            access_log /var/log/nginx/my_server/extras.log debug_phpfpm;
            include         /etc/nginx/fastcgi_params;
            root            /var/www/my_server/extras;
            fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
            autoindex       on;
            fastcgi_pass    unix:/var/tmp/php-fpm.sock;
            fastcgi_index   index.php;

            expires max;

    }

Meu /etc/nginx/fastcgi_params ;

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

A saída de /usr/sbin/php5-fpm -version :

PHP 5.3.10-1ubuntu3.5 (fpm-fcgi) (built: Jan 18 2013 23:44:08)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
with XCache v1.3.2, Copyright (c) 2005-2011, by mOo

O Nginx 1.2.6 é compilado a partir da fonte para módulos extras.

    
por Chris 10.03.2013 / 06:56

1 resposta

4

Suponho que você forneceu informações suficientes e não omitiu nada importante nas informações de configuração do nginx que você optou por não compartilhar.

Com essa advertência em mente ...

Parece que você está passando tudo em /extras/ para o PHP, incluindo solicitações de dados estáticos. Isso está sendo negado com razão, já que significa que um script PHP malicioso carregado com uma extensão .jpg (por exemplo) não será executado como PHP.

Para resolver esse problema, você precisa passar apenas solicitações de scripts PHP em /extras/ para o PHP.

location ~ /extras/.*\.php$ {

Se você precisar manipular arquivos estáticos sob esse diretório especialmente, poderá criar um bloco location para eles. (Você provavelmente deveria fazer isso, já que você parece estar passando tudo para o Django ...)

location /extras/ { }

Outro problema que você provavelmente está causando é que seu bloco server não tenha um root válido definido. Este é um dos mais comuns erros de configuração do nginx . Deve ser algo como:

root /var/www/my_server;

(Isso também significa que você não deve definir root s redundantes em cada location .)

    
por 10.03.2013 / 07:40