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;
    }
}

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!


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.