При настройке среды разработки с использованием nginx, fastcgi и php я получаю «Неверный запрос (неверный HTTP-запрос)» с php сервера

Я настраиваю среду разработки, которая использует nginx и пересылает запросы на php-сервер из командной строки, используя fastcgi. Когда я посылаю запросы на php-сервер напрямую, он обрабатывает их правильно. Сервер nginx может правильно обрабатывать запросы на файлы не-php. Однако, когда я отправляю php-запрос через nginx, сервер php срабатывает, но возвращается с «Неверный запрос (неверный HTTP-запрос)».

Извиняюсь за прикрепление всех моих файлов конфигурации, но я не уверен, с чего начать. Все файлы находятся в $PROJECT_PATH/dev-config/,

Вот соответствующие части моего конфига nginx.

http {
...

server {
root .;
listen       8123;
server_name  localhost;

location / {
index  index.php;
}

location ~ \.php$ {
try_files $fastcgi_script_name =404;
fastcgi_param  SCRIPT_FILENAME $request_filename;
fastcgi_pass   127.0.0.1:9123;
fastcgi_index  index.php;
include        fastcgi_params;  # this file is the default
}
}
}

Вот скрипт, который запускается для (повторного) запуска nginx и php:

#!/bin/bash

PROJECT_PATH="$(dirname $0)/../"
nginx -s stop || true
nginx -c dev-config/nginx.conf -p $PROJECT_PATH

php -c php-dev.ini -t $PROJECT_PATH -S 127.0.0.1:9123

Файл, который я отправляю, это test.php:

<? echo 'YAY!' ?>

Внутри моих журналов ошибок nginx я получаю такие сообщения:

2017/10/27 08:12:56 [error] 68934#0: *1 upstream prematurely closed connection while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9123", host: "localhost:8123"

Одновременно php отправляет такие сообщения:

[Fri Oct 27 08:12:56 2017] 127.0.0.1:52470 Invalid request (Malformed HTTP request)

Это показывает, что запрос обрабатывается nginx и отправляется дальше на сервер php. Но запрос как-то неверен.

  1. Что я могу сделать, чтобы отправить правильно сформированные запросы?
  2. Или, если сейчас невозможно сказать, что я могу сделать, чтобы получить от php больше информации о том, какой именно запрос он получает?

Чтобы было ясно, это предназначено для запуска в среде разработчика на ноутбуке без изменений конфигурации для каждого пользователя.

2

Решение

Проблема, с которой я столкнулся, заключалась в том, что на php-сервере с командной строкой не работает fastcgi. Поскольку сервер командной строки уже является сервером, мне вообще не нужны fastcgi. Вместо этого я могу proxy_pass к этому.

Я изменил блок местоположения PHP на это, и это сработало:

location ~ \.php$ {
proxy_pass http://127.0.0.1:9123;
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector