Компиляция NGINX и конфигурация gzip (с rails 3 + php-fpm): невозможно распаковать торрент-клиентом из php-трекера

Привет. У меня странный вопрос о новом сервере, установленном с помощью Nginx+php-fpm+passenger. Все последней версии. У меня все настроено хорошо, все веб-страницы работают, однако, когда пользователи пытаются получить доступ к php-трекеру моего личного трекера, он возвращает им ошибку: «не могу распаковать». Это uTorrent. На Vuze это исключение Java Gzip, говорящее, что это недопустимый файл gzip или около того, что ясно показывает, что сервер возвращает некоторые данные gzip, которые клиенты не понимают.

Итак, вот мой nginx.conf:


user  www-data;
worker_processes  4;

events {
    worker_connections  1024;
}

http {
    passenger_root /home/meng/.rvm/gems/ruby-1.9.2-p136/gems/passenger-3.0.2;
    passenger_ruby /home/meng/.rvm/wrappers/ruby-1.9.2-p136/ruby;

    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    gzip on;
    gzip_static  on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";
    gzip_comp_level 2;
    gzip_vary on;
    gzip_proxied any;
    gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    include /opt/nginx/conf/sites-enabled/*;
}

Nginx был скомпилирован пассажиром с аргументами: --with-http_stub_status_module --with-http_gzip_static_module на основе руководства, указанного здесь http://geeksharp.com/2010/09/14/nginx-rails-and-php-round-2/ Итак, я думаю, это проблема с gzip, у кого-нибудь есть решения, чтобы сервер возвращал правильные данные gzip, чтобы клиенты их ели? Большое спасибо.


person wlicpsc    schedule 09.02.2011    source источник


Ответы (1)


Попробуйте отключить gzip_static для динамически генерируемых местоположений. gzip_static попытается создать файл .gz в том же каталоге, что и запрос, и это может вызвать проблемы с PHP, Ruby и т. д.

Кроме того, я бы увеличил gzip_comp_level до 5 или 6, особенно если вы кэшируете сжатый файл с помощью gzip_static.

person Mark Rose    schedule 10.02.2011
comment
Спасибо за совет. Проблема кажется решенной путем отключения уровня отчетов об ошибках php, поскольку он выдает ошибки, такие как устаревшие или уведомления, до соответствующих данных gzip. Программа нормально работает после выключения. Я поверну уровень gzip к тому, что вы сказали. ~ - person wlicpsc; 14.02.2011
comment
В php.ini есть параметр display_errors, который вы можете использовать для отключения ошибок в рабочем окне. - person Mark Rose; 16.02.2011