ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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



Sergey Shepelev пишет:
2009/10/28 Станислав <server_inc@xxxxxxx>:
Здравствуйте!
Вот недавно столкнулся с проблемой...

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;
        ??? ??? ??? ??? Т_Т
}








 




Copyright © Lexa Software, 1996-2009.