403 Proibido ao tentar acessar minha página de teste simples


13

Acabei de instalar o nginx e estou tentando configurar meu primeiro site. Estou tentando usar o nginx com php-fpm. O nginx está instalado (quando vou para o meu ip, recebo as boas-vindas padrão da página nginx).

Agora estou tentando obter um script simples em execução:

<?php
phpinfo();

Mas continuo acessando uma página 403 Proibida. No log do meu host virtual, vejo muitas linhas como:

2012/05/18 01:29:45 [error] 4272#0: *1 access forbidden by rule, client: x.170.147.49, server: example.com, request: "GET / HTTP/1.1", host: "example.com"

O arquivo é /srv/www/test/index.phpdo qual nginx é o proprietário (eu procurei 777o caminho completo, incluindo o arquivo sem sucesso).

Eu verifiquei que o nginx realmente está sendo executado sob usuário e grupo nginx/nginxna configuração e é. No nginx.conf, mudei o caminho padrão de configuração para garantir que nenhuma outra configuração atrapalhe ( include /etc/nginx/sites-enabled/).

A configuração que estou usando se parece (se você precisar de outras configurações (php-fpm / nginx.conf), por favor me avise):

server {
    listen 80;

    server_name example.com;
    root /srv/www/test;
    access_log /var/log/nginx/example-access.log;
    error_log  /var/log/nginx/example-error.log error;

    location ~ /.          { access_log off; log_not_found off; deny all; }
    location ~ ~$           { access_log off; log_not_found off; deny all; }

    location ~* .(js|css|png|jpg|jpeg|gif|ico|xml|swf|flv|eot|ttf|woff|pdf|xls|htc)$ {
        add_header Pragma "public";
        add_header Cache-Control "public, must-revalidate, proxy-revalidate";
        access_log off;
        log_not_found off;
        expires   360d;
    }

    location ~ /.ht {
        deny all;
        access_log off;
        log_not_found off;
    }

    location ~ /. {
        access_log off;
        log_not_found off;
        deny all;
    }

    location ~ ^/(index|frontend_dev|admin|staging).php($|/) {
        #rewrite ^/(.*)/$ /$1 permanent;
        fastcgi_split_path_info ^(.+.php)(.*)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;

    }

    location / {
        index index.php;
        try_files $uri /index.php?$args;
    }
}

Respostas:


22

Sua configuração está intencionalmente bloqueando-a:

location ~ /. {
    access_log off;
    log_not_found off;
    deny all;
}

Isso corresponde a qualquer solicitação em que uma barra é seguida por um caractere de qualquer tipo; o .caractere em uma expressão regular significa "qualquer caractere".

Estou assumindo que você pretendia verificar um literal .; seria essa configuração:

location ~ /\. {

Deixe-me saber se não é esse o caso!


OMG, eu me sinto tão estúpido agora (considerando o fato de que eu estive estrelando isso por uhhhmmm 'algum' tempo). Obrigado por sua sua resposta rápida!
User6669 18/04/12
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.