nginx+fpm - код ответа всегда 200

grigori

( ͡° ͜ʖ ͡°)
Команда форума
привет всем
у меня nginx/0.7.57 + php 5.3.4rc
пишу
header('HTTP/1.0 400 Bad Request');
exit;
а браузер получает 200й ответ

конфиги стандартные, дефолтные

кто с этим встречался?
 

tz-lom

Продвинутый новичок
встречался,когда прописано было неправильно перенаправление на точку входа в nginx -е

вот как сейчас прописанно,там же видно и в чём ошибка была
PHP:
server {
                listen          192.168.1.2:80;
                server_name    site.net www.site.net;
                server_tokens off;

                location ~ /incl/ {
                        deny all;
                        break;
                }

                location ~ .php$ {
                  fastcgi_pass   unix:/var/run/php-cgi/fcgi-php5.3.socket-1;
                  fastcgi_param  SCRIPT_FILENAME  /var/www/site.net/htdocs/$fastcgi_script_name;
                  include /etc/nginx/fastcgi_params;
                }

                location / {
                        autoindex off;
                        #rewrite ^/(.*)$     /entrypoint.php?file=$1   break;
                        #error_page  404 = /entrypoint.php?_404&path=$uri&$args;
                        if (!-e $request_filename) {
                                rewrite ^(.+)$ /entrypoint.php last;
                        }
                }

                location ~ /\.+ {
                        deny  all;
                }
                access_log      /var/www/site.net/log/access.log main;
                error_log       /var/www/site.net/log/error.log info;

                root /var/www/site.net/htdocs;
        }
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
у меня нет rewrite или error_page, прямой конфиг
 

Активист

Активист
Команда форума
header('HTTP/1.0 400 Bad Request');
А брузер случаем не 1.1 получает? gzip?

А так?
PHP:
header('HTTP/1.0 400 Bad Request', true, 400);
или так
PHP:
header('HTTP/1.1 400 Bad Request', true, 400);
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
ничего не меняет

[root@devel ~]# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /test.php HTTP/1.1
Host: devel

HTTP/1.1 200 OK
Server: nginx/0.7.57
Date: Sat, 04 Dec 2010 04:23:59 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.3.4RC2-dev
он просто игнорирует строку статуса

конфиг:
PHP:
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log debug ;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] $request '
                      '"$status" $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    sendfile        off;
    tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    gzip  off;
    gzip_comp_level 3;
    gzip_types application/x-javascript text/plain application/xml;

    resolver   127.0.0.1;
    server {
        listen       80;
        server_name  devel;

        location /pics {
            autoindex  on;
            root   /www;
            index  index.html index.htm;
        }
        location / {
            root   /www;
            index  index.html index.htm index.php;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location ~ \.php {
            fastcgi_pass   unix:/var/run/php-fcgi.sock;
            include fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME  /www$fastcgi_script_name;
        }
    }
}
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
если ставлю header('Location: abc'); - нормально выставляется 302й редирект
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
grigori
А возможно глупый вопрос, но... Что говорит headers_list() после выставления 400 хедера?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Активист
я скачал версию с исправленным багом в SPL

c0dex
array
0 => string 'X-Powered-By: PHP/5.3.4RC2-dev' (length=30)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Хм, явно изменяет этот список только если написать так header("Status: 400 Bad Request");

header("HTTP/1.0 400 Bad Request"); - не попадает в список хедеров, но мой nginx видит его все равно как 400. Версия php 5.3.3. Чего-то я нихрена не понимаю(((
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
проблема в опции
cgi.rfc2616_headers = 1
наверное, nginx не понимает "RFC2616 compliant header"
таки конфиг был не дефолтный
 

fixxxer

К.О.
Партнер клуба
Ох... Давно надо выкинуть из fpm все говно, унаследованное из sapi/cgi.
 
Сверху