nginx отдает неправильный хедер Content-Type

Станислав server_inc at list.ru
Thu Oct 29 03:15:26 MSK 2009


Sergey Shepelev пишет:
> 2009/10/28 Станислав <server_inc at list.ru>:
>   
>> Здравствуйте!
>> Вот недавно столкнулся с проблемой...
>>
>> Linux Gentoo
>>
>> $ nginx -V
>> nginx version: nginx/0.7.62
>> configure arguments: --prefix=/usr --conf-path=/etc/nginx/nginx.conf
>> --http-log-path=/var/log/nginx/access_log
>> --error-log-path=/var/log/nginx/error_log --pid-path=/var/run/nginx.pid
>> --http-client-body-temp-path=/var/tmp/nginx/client
>> --http-proxy-temp-path=/var/tmp/nginx/proxy
>> --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi --with-md5-asm
>> --with-md5=/usr/include --with-sha1-asm --with-sha1=/usr/include
>> --with-http_realip_module --with-http_flv_module --with-http_ssl_module
>> --with-http_perl_module --with-http_stub_status_module
>>
>> есть директория /forum/style_images/
>>
>> изначально все прекрасно...
>> говорю энджинксу превед
>> GET /forum/style_images/css_2.css HTTP/1.0
>> ........
>> отвечает нормально
>> HTTP/1.1 200 OK
>> Server: nginx
>> Date: Wed, 28 Oct 2009 19:16:36 GMT
>> Content-Type: text/css
>> Content-Length: 31730
>> Last-Modified: Sat, 18 Apr 2009 09:48:59 GMT
>> Connection: close
>> Accept-Ranges: bytes
>>
>> решил дать права энджинксу на запись этой директории... пускай люди грузят
>> туда картинки и файлы стилей через админку...
>> но предварительно убрав выполнения фэст-цги скриптов ... ибо ну нафиг
>>
>> location ^~ /forum/style_images/ {
>>           root   /var/www/blahblah.ru;
>>           types {
>>               text/plain php php3 php4 php5 phtml phps pl pm;
>>           }
>>       }
>>
>>     
>
> Вы не "убрали выполнение FastCGI скриптов", а попытались заставить
> nginx отдавать файлы с определёнными расширениями с неправильным
> content-type text/plain.
>
> FastCGI скрипты тем и отличаются от CGI скриптов, что их "выполняет"
> не вебсервер, а какой-то внешний скрипт. Это не апач. nginx не
> запускает CGI скрипты. FastCGI скрипты не запускает никто, кроме вас,
> админа, который должен настроить запуск spawn-fcgi, php-fpm или
> другого спавнера.
>
> Наверное, у вас есть локейшн типа
>
> location ~ \.php { fastcgi_pass ... }
>
> который, является локейшном по регекспу.
> И указанный выше локейшн
>
> location ^~ /forum/style_images/ {
>    root   /var/www/blahblah.ru;
> }
>
> Он просто отработает первым и до регекспа не дойдёт дело. Не нужно
> никаких приседаний, извращающих content-type.
>
> Если php вы обрабатываете как-то иначе, давайте посмотрим ваш конфиг.
>
>   
>> и тут пдыщ......
>> вот что мне энджинкс ответил
>>
>> HTTP/1.1 200 OK
>> Server: nginx
>> Date: Wed, 28 Oct 2009 19:21:31 GMT
>> Content-Type: application/octet-stream
>> Content-Length: 31730
>> Last-Modified: Sat, 18 Apr 2009 09:48:59 GMT
>> Connection: close
>> Accept-Ranges: bytes
>>
>> в mime.types четко написано
>> .....
>> text/css                              css;
>> .....
>> application/octet-stream              bin exe dll;
>> application/octet-stream              deb;
>> application/octet-stream              dmg;
>> application/octet-stream              eot;
>> application/octet-stream              iso img;
>> application/octet-stream              msi msp msm;
>> ......
>> nginx.conf
>> ....
>> http {
>>       include         /etc/nginx/mime.types;
>>       default_type    application/octet-stream;
>> ....
>>
>> из-за неправильного ответа, Лиса вообще не загружает файлы стиля...
>> матерится.... говорит :
>> "Ошибка: Таблица стилей http://...../forum/style_images/css_2.css не была
>> загружена, потому что её MIME-тип («application/octet-stream») не
>> «text/css»."
>> Оперу и IE8.0 вроде как все устраивает... видимо они пофигистически
>> относится к неправильному заголовку...
>>
>> собственно вопросик... это баг или фича?
>>
>>
>>
>>
>>
>>     
Эхх... спасибо большое, что направили на верный путь... и чего это меня 
потянуло делать тексплеин... наверное старая привычка со времен апача...

обработка файлов с расширением php так:

location ~ \.php$ {
             limit_req zone=qghsdubphp burst=1;
             fastcgi_pass   unix:/var/run/php-fpm.sock;
             fastcgi_param  SCRIPT_FILENAME  
/var/www/блабла.ru$fastcgi_script_name;
             include        /etc/nginx/fastcgi_params;
        }
перечитал несколько раз 
http://sysoev.ru/nginx/docs/http/ngx_http_fastcgi_module.html не понял, 
а как собственно выключить обработку...

т.е.

location ~ ^/forum/style_images/.+\.php$ {
   root   /var/www/blahblah.ru;
	??? ??? ??? ??? Т_Т
}










More information about the nginx-ru mailing list