Я пытаюсь настроить 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
заявление, иначе ваши директивы могут быть автоматически отменены.