使用Nginx,fastcgi和php设置开发环境时,我从php服务器收到“无效请求(格式错误的HTTP请求)”

我正在设置一个使用nginx的开发环境,并使用fastcgi将请求转发到命令行php服务器.当我直接向php服务器发送请求时,它会正确处理它们. Nginx服务器可以正确处理对非PHP文件的请求.但是,当我通过nginx发送php请求时,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服务器.但是该请求在某种程度上是不正确的.

>如何发送格式正确的请求?
>或者,如果现在无法告诉我,我该怎么做才能从php获得有关请求的确切信息,确切的说,是什么?

明确地说,这是要在笔记本电脑的开发环境中运行,而每个用户的配置都不会更改.
最佳答案
我遇到的问题是命令行php服务器没有运行fastcgi.由于命令行服务器已经是服务器,因此我完全不需要fastcgi.相反,我可以proxy_pass到它.

我将php位置块更改为此,并且它起作用了:

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

dawei

【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。