403 Zabronione, gdy próbuję dotrzeć do mojej prostej strony testowej

13

Właśnie zainstalowałem nginx i próbuję skonfigurować moją pierwszą stronę. Próbuję użyć nginx z php-fpm. Nginx jest zainstalowany (kiedy przechodzę do mojego adresu IP, dostaję domyślną stronę powitalną nginx).

Teraz próbuję uruchomić prosty skrypt:

<?php
phpinfo();

Ale ciągle odwiedzam stronę 403 Forbidden. W dzienniku mojego wirtualnego hosta widzę wiele linii, takich jak:

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"

Plik, /srv/www/test/index.phpktórego właścicielem jest nginx (poszedłem jak za 777pełną ścieżkę, w tym plik bezskutecznie).

Sprawdziłem, czy nginx rzeczywiście działa nginx/nginxw konfiguracji użytkownika i grupy w konfiguracji i tak jest. W pliku nginx.conf zmieniłem domyślną ścieżkę konfiguracji, aby upewnić się, że żadna inna konfiguracja nie będzie przeszkadzać ( include /etc/nginx/sites-enabled/).

Konfiguracja, której używam wygląda (jeśli potrzebujesz innych konfiguracji (php-fpm / nginx.conf), daj mi znać):

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;
    }
}
user6669
źródło

Odpowiedzi:

22

Twoja konfiguracja celowo go blokuje:

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

Będzie to pasować do każdego żądania, w którym po ukośniku następuje dowolna postać; .znaków w wyrażeniu regularnym oznacza „dowolny znak”.

Zakładam, że chciałeś sprawdzić literał .; to będzie ta konfiguracja:

location ~ /\. {

Daj mi znać, jeśli tak nie jest!

Shane Madden
źródło
OMG Czuję się teraz tak głupio (biorąc pod uwagę fakt, że grałem uhhhmmm „trochę” przez jakiś czas). Dzięki za szybką odpowiedź!
user6669,