403 Verboten, wenn versucht wird, meine einfache Testseite zu erreichen

13

Ich habe gerade nginx installiert und versuche, meine erste Site einzurichten. Ich versuche, Nginx mit PHP-Fpm zu verwenden. nginx ist installiert (wenn ich zu meiner ip gehe, bekomme ich die Standard-Willkommensseite von nginx).

Jetzt versuche ich ein einfaches Skript zum Laufen zu bringen:

<?php
phpinfo();

Aber ich schlage immer wieder auf eine verbotene Seite. Im Protokoll meines virtuellen Hosts sehe ich viele Zeilen wie:

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"

Die Datei gehört /srv/www/test/index.phpnginx (ich habe 777den vollständigen Pfad einschließlich der Datei ohne Erfolg angegeben).

Ich habe überprüft, dass Nginx tatsächlich unter Benutzer und Gruppe nginx/nginxin der Konfiguration ausgeführt wird und es ist. In der nginx.conf habe ich den Standard-Konfigurations-Include-Pfad geändert, um sicherzustellen, dass keine andere Konfiguration im Weg ist ( include /etc/nginx/sites-enabled/).

Die Konfiguration, die ich verwende, sieht folgendermaßen aus (wenn Sie andere Konfigurationen benötigen (php-fpm / nginx.conf), lassen Sie es mich bitte wissen):

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
quelle

Antworten:

22

Deine Konfiguration blockiert es absichtlich:

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

Das passt zu jeder Anfrage, bei der auf einen Schrägstrich ein beliebiger Buchstabe folgt. Das .Zeichen in einem regulären Ausdruck bedeutet "ein beliebiges Zeichen".

Ich gehe davon aus, dass Sie nach einem Wortlaut suchen wollten .. das wäre diese konfiguration:

location ~ /\. {

Lass es mich wissen, wenn das nicht der Fall ist!

Shane Madden
quelle
OMG, ich fühle mich jetzt so dumm (wenn man bedenkt, dass ich schon eine Weile bei diesem Film mitgewirkt habe). Danke für Ihre schnelle Antwort!
user6669