Настройка nginx + php-fpm

Started by Antiment on 2012-02-16 11:38 — 25 replies, 11760 views

#11
nginx/1.2.1
php 5.4.4
mysql 5.5.35
Debian 7

404 на главной и все тут. Что только не делал... Уже 2-й день бьюсь.
Конфиг один в один из дистриба. С разными другими тоже ничего не меняется - либо 404, либо пустая страницы. Причем, если в index.php добавить phpinfo() - отображается информация. Из index.php Только 404 получается. В чем проблема может быть?
http://torrents.petrachuk.ru/
#12
Кури конфиг nginx /etc/nginx/conf.d/default.conf
Вот пример моего, не полный, ибо незачем палить все.😉
server {
    root /var/www/твоя папка сайта;
    index index.php;
    server_name твой домен www.твой домен;
    charset utf8;
   
    error_log /var/log/nginx/название твоего лога для сайта.log;
    access_log off;
   
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
    }
 
        # Cached Images
        location ~* \.(jpg|jpeg|gif|png|css|js|ico)$ {
            root        /var/www/твоя папка сайта;
            access_log  off;
            expires      30d;
            add_header  Cache-Control  public;
        }
 
        location ~ \/admin|backup\/ {
            deny all;
        }
        # Deny folder (Sec. lvl1)
        location ~ \/(cache|log|attach_mod|cache|config|includes|language|triggers)\/ {
            deny all;
        }
 
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        # deny sql,tpl,db,inc,log
        location ~ /\.ht {
            deny  all;
        }
        location ~ \.(.*sql|tpl|db|inc|log)$ {
            deny  all;
        }
 
    }
#13
server {
        listen 80;
        server_name bla.com;
     
        access_log /home/darkmod/log/torrent/access.log;
        error_log /home/darkmod/log/torrent/error.log;
     
        error_page 403 /var/www/bla.com/error403.html; 
        error_page 404 /var/www/bla.com/error404.html;
     
        include /etc/nginx/badtorrent.conf; # блок IP
     
        charset utf8;
     
        location  /404.html {
            internal;
        }
     
        location = /error403.html {       
            root  /var/www/bla.com;
            allow all;
        }
 
        location / {
                root /var/www/bla.com;
                index index.php index.xhtml;
                try_files $uri $uri/ /index.php?$args;
        }
 
        location = /favicon.ico {
                log_not_found off;
        }
 
        location ~ \.php$ {
                client_max_body_size 500m;
                root /var/www/bla.com;
                fastcgi_index  index.php;
                fastcgi_intercept_errors on;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_pass unix:/tmp/php-fpm.sock;
                fastcgi_buffers 256 16k;
                fastcgi_max_temp_file_size 0;
                include fastcgi_params;
        }
        location ~ /\.ht {
                deny all;
        }
}
#14
это не весь конф)
#15
Кури конфиг nginx /etc/nginx/conf.d/default.conf
Вот пример моего, не полный, ибо незачем палить все.😉
Ни один конфиг был скурен... Так-то на этом сервачке пара Joomla бежит, один Wordpress, rutracker и Redmine до кучи.

Итак. Для чистоты эксперимента, берем конфиг из дистрибутива, заменяем блок server на твой, исправляем пути к файлам сайта + настройки php-fpm через socket. В итоге, получаем:
Spoiler content hidden.

Проверяем.
http://torrents.petrachuk.ru/test.html - статику раздает
http://torrents.petrachuk.ru/test.php - php-fpm работает
http://torrents.petrachuk.ru, http://torrents.petrachuk.ru/index.php - пустая страница (смотрим исходный код страницы - пусто)
Смотрим логи - ошибок нет.

Почему test.php работает, а index.php нет? Сдается мне проблема где-то в другом месте...
Конфиг от DarkMod тоже не взлетел с ходу. Следующим постом подробнее опишу.

На всякий, права на файлы
Spoiler content hidden.
#16
/etc/init.d/nginx reload
Команда была выполнена?
#17
Part 2
это не весь конф)
fastcgi_params и nginx.conf берем из дистрибутива. Заменяем секцию server на предложенную DarkMod. Меняем домен, пути к сайту и логам. В fastcgi_params комментируем 5-ю строку т. к. дублируется в конфиге. Получаем:
Spoiler content hidden.

/etc/init.d/nginx reload
Команда была выполнена?
Делаем
service nginx restart && service php5-fpm restart

Проверяем.
Результаты один в один повторяют описанные в посте #15.
В логе ошибок пусто. На всякий случай, access_log (понимаю, что не нужен):
Spoiler content hidden.
Какие-нибудь еще идеи? Куда копать?
#18
Интересная штука...
В конфиге из дистрибутива прописан 50x.html которого на самом деле нет.
nginx с дистрибутивным конфигом на самом деле выкидывает 500 ошибку, не находит 50x.html... Нате вам 404 как в #6 и #8 постах 🙂
#19
Part 2

fastcgi_params и nginx.conf берем из дистрибутива. Заменяем секцию server на предложенную DarkMod. Меняем домен, пути к сайту и логам. В fastcgi_params комментируем 5-ю строку т. к. дублируется в конфиге. Получаем:
Spoiler content hidden.


Делаем
service nginx restart && service php5-fpm restart

Проверяем.
Результаты один в один повторяют описанные в посте #15.
В логе ошибок пусто. На всякий случай, access_log (понимаю, что не нужен):
Spoiler content hidden.
Какие-нибудь еще идеи? Куда копать?
Нужно именно reload
#20
Нужно именно reload
Если глядеть в скрипт, restart и force-reload одно и то же. Ну да пофиг... Не помогло...