403 запрещено в индексе wordpress с nginx, остальные страницы работают нормально

Я настраиваю свой блог на новом экземпляре EC2, потому что один из сайтов на сервере, на котором он сейчас размещен, подвергается атаке DDoS. У меня проблемы с nginx, потому что я могу либо видеть все страницы в порядке, но 403 в индексе, либо видеть индекс, но 404 на страницах (в зависимости от конфигурации, которую я использую)

Вот моя конфигурация nginx:

server {
    listen       80;

    server_name  www.test.com;
    server_name  test.com;
    root /www/blog;

    include conf.d/wordpress/simple.conf;
}

И simple.conf:

location = /favicon.ico {
            log_not_found off;
            access_log off;
    }

    location = /robots.txt {
            allow all;
            log_not_found off;
            access_log off;
    }

    location / {
            # This is cool because no php is touched for static content. 
            # include the "?$args" part so non-default permalinks doesn't break when using query string
            try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
            #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
            include fastcgi.conf;
            fastcgi_intercept_errors on;
            fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
            expires max;
            log_not_found off;
    }

если я изменю файл try_files $ uri $ uri / /index.php?$args; чтобы индексировать index.php, первая страница будет работать нормально, а остальные будут иметь номер 404. Если я оставлю так, первая страница будет иметь номер 403.

Вот журнал ошибок:

2013/08/07 19:19:41 [error] 25333#0: *1 directory index of "/www/blog/" is forbidden, client: 64.129.X.X, server: test.com, request: "GET / HTTP/1.1", host: "www.test.com"

Это каталог 755 для пользователя nginx:

drwxr-xr-x 6 nginx nginx  4096 Aug  7 18:42 blog

Есть ли что-нибудь очевидное, что я делаю неправильно?

Спасибо !


person Alb Dum    schedule 07.08.2013    source источник


Ответы (3)


Добавьте index index.php; в серверный блок, если он не работает, вам нужно удалить $uri/, потому что вы не хотите делать autoindex on


РЕДАКТИРОВАТЬ: только что заметил, что вы уже выяснили свою проблему, поэтому я добавлю ее обоснование. Причина, по которой вам понадобился autoindex on;, заключается в том, что без него nginx будет следовать правилам try_files,

  1. Проверьте, есть ли файл с именем /, и, конечно же, он не работает.
  2. Проверьте, есть ли каталог с именем / (добавив root, это будет = /www/blog/), эта проверка будет успешной, поэтому он пытается отобразить содержимое папки.
  3. Поскольку вы не указали autoindex on;, поэтому по умолчанию nginx должен запрещать вывод списка каталогов, поэтому он вернет ошибку 403 запрещено.
  4. Остальная часть сайта работает нормально, потому что она не проходит $uri/ тест или не достигает его, потому что у вас, вероятно, нет папки с именем image.jpg или stylesheet.css и т. Д.
person Mohammad AbuShady    schedule 07.08.2013

Похоже, мне нужен встроенный index.php в определении сервера {}, а не в местоположении {}

person Alb Dum    schedule 07.08.2013
comment
lol только что понял, что вы ответили на него уже после того, как я ответил, не заметил, думаю, я отредактирую свой ответ, чтобы объяснить, почему. - person Mohammad AbuShady; 08.08.2013

Похоже, что вы не разрешаете отправлять аргументы в CMS, поэтому этот uris не будет отображать этот uris, который принесет информацию из базы данных и перенаправит вас на страницу 403.

person Joe Walker    schedule 07.08.2013
comment
Не уверен, что вы имеете в виду, я отправляю аргументы через? $ Args? - person Alb Dum; 07.08.2013