Настройка nginx + php-fpm: существут папка и существует index.php

сайт работает на apache, стоит задача перекинуть на связку nginx + php-fpm.

Есть конфиг:
        location / {
                index index.php

                if (!-e $request_filename) {
                     rewrite ^/(.*)$ /index.php?$args last;
                     break;
                }
        }


Если не существует файл, папки и симв. ссылки перекидываем на php-fpm.

сломались URL, которые закончиваются на "/"

/forum/styles.css — работает, файл существует отдает nginx
/forum/news.html — работает, файл не существует, генерит php-fpm (/index.php)
/forum/index.php — работает, файл не существует, генерит php-fpm (/index.php)

/forum/ — не работает, nginx видит что папка существут и не отдает ее php-fpm (/index.php) = 403 Forbidden.

Пробовал сделать через " !-f ", вроде работает, но ломается в другом месте:

есть путь
/xhprof_html/index.php?a=1&b=2
/xhprof_html/index.php — существует!

не работает так
/xhprof_html/?a=1&b=2

т.е. не видет index.php

на apache все работает

Заранее спасибо
  • Вопрос задан
  • 6852 просмотра
Решения вопроса 1
opium
@opium
Просто люблю качественно работать
все давно делает через try files
плохой пример
location ~ \.php$ {
<------> try_files $uri =404;
fastcgi_pass unix:/opt/pifpm/fpmsockets/fashions.sock;
fastcgi_index index.php;
include fastcgi_params;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
нужно добавить еще одно условие совпадения для try_files — $uri/
        index index.php index.html index.htm;
        location / {
                try_files $uri $uri/ @rewrite;
        }

        location @rewrite {
                rewrite ^ /index.php?$args;
        }
Ответ написан
Комментировать
EugeneOZ
@EugeneOZ
Сам по себе Drupal не образец, но эта статья может Вам помочь:
wiki.nginx.org/Drupal
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы