Назад | Перейти на главную страницу

настройка nginx с django и php на aws

Я пытаюсь настроить nginx для приложения django и php на AWS / Linux AMI. Nginx уже настроен для одновременной работы с несколькими приложениями django, и все работает нормально.

Теперь мне нужно включить стороннее решение на основе php. Это должно работать на отдельном URL-адресе / тире /.

Я прошел через множество руководств и ответов на вопросы, но ни один из них не помог мне.

Я уже установил php и php-fpm. Я изменил файл конфигурации в /etc/php-fpm-5.5.d/www.conf и попытался использовать как сокет, так и TCP / IP:

listen = 127.0.0.1:9000

а также

listen = /var/run/php-fpm.sock

После перезапуска службы php-fpm я проверил, действительно ли сокет создан. Затем я соответствующим образом изменил nginx:

location ~ /dash/$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    #fastcgi_pass   127.0.0.1:9000;
    fastcgi_pass unix:/var/run/php-fpm.sock;
    fastcgi_index  index.php;
    include        fastcgi_params;
}

Я создал файл test.php для тестирования php, а также разместил стороннее решение в / usr / share / nginx / html /. Когда я пытаюсь навестить https: // ДОМЕН / тире / У меня ошибка 404 (или у меня будет пустая страница, если я удалю try_files установка). Однако, когда я пытаюсь посетить https: //DOMAIN/dash/index.php или https: //DOMAIN/test.php, браузер предлагает мне файл для загрузки - фактический файл index.php, который я ожидал создать для меня html. Тот же результат я получаю с помощью wget.

service php-fpm status претензии php-fpm-5.5 (pid 12345) is running... поэтому я предположил, что файлы php должны быть обработаны.

Я уже пытался изменить конфигурацию php-fpm, изменив атрибуты listen.owner и list.group так же как user и group к nobody, ec2-user или nginx но я все равно получаю тот же 404.

Я уже пробовал параметр fastcgi_param SCRIPT_FILENAME ... но так как я не был уверен, что именно здесь должно быть, я удалил его. Полагаю, теперь мы используем значение по умолчанию из fastcgi_param файл: fastcgi_param SCRIPT_NAME $fastcgi_script_name;

Если вы заметили очевидную ошибку или что-то, что я упустил, дайте мне знать. Прошу прощения за неправильную терминологию, если таковая имеется.

Ваш location необходимо обрабатывать URI, заканчивающиеся на .php. Если ваша конфигурация загружает ваши файлы PHP, у вас, вероятно, уже есть root установить правильно.

Многие установки имеют подходящую стоимость SCRIPT_NAME в рамках включенного fastcgi_params файл, но в приведенном ниже примере это явно указано (на всякий случай).

Например:

root ...;

location ~ \.php$ {
    try_files $uri =404;
    #fastcgi_pass  127.0.0.1:9000;
    fastcgi_pass   unix:/var/run/php-fpm.sock;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME $request_filename;
}    

В fastcgi_split_path_info и fastcgi_index в этом случае директивы не требуются. Всегда размещайте fastcgi_param заявления после то include заявление, иначе ваши директивы могут быть автоматически отменены.