403 Запрещено при попытке достичь моей простой тестовой страницы

Я только что установил nginx, и я пытаюсь настроить свой первый сайт. Я пытаюсь использовать nginx с php-fpm. nginx установлен (когда я перехожу на мой ip, я получаю приветствие по умолчанию на странице nginx).

Теперь я пытаюсь запустить простой скрипт:

<?php
phpinfo();

Но я продолжаю удалять 403 Запретную страницу. В журнале моего виртуального хоста я вижу много строк, например:

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"

Файл /srv/www/test/index.php, из которых nginx является владельцем (я пошел как 777 полный путь, включая файл, безрезультатно).

Я проверил, что nginx действительно работает под пользователем и группой nginx/nginx в конфигурации, и это так. В nginx.conf я изменил путь конфигурации по умолчанию, чтобы убедиться, что никакая другая конфигурация не мешает (include /etc/nginx/sites-enabled/).

Конфигурация, которую я использую, выглядит (если вам нужны другие конфиги (php-fpm /nginx.conf), пожалуйста, дайте мне знать):

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;
    }
}
12 голосов | спросил user6669 18 Mayam12 2012, 04:30:00

1 ответ


21

Ваша конфигурация намеренно блокирует его:

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

Это будет соответствовать любому запросу, в котором за чертой следует символ любого типа; символ . в регулярном выражении означает «любой символ».

Я предполагаю, что вы хотите проверить литерал .; это будет эта конфигурация:

location ~ /\. {

Сообщите мне, если это не так!

ответил Shane Madden 18 Mayam12 2012, 04:35:21

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132