LINUX.ORG.RU
ФорумAdmin

CentOS: не работает gzip-сжатие в nginx

 , , ,


1

2

Собственно, что в 1.3.1, что в 1.2.1 — напрочь игнорируются настройки gzip-сжатия. Контент идёт всегда сырой. Хоть свои конфиги, хоть дефолтовые.

В Gentoo достаточно указать gzip on - и всё, контент идёт сжатый. Пробовал подсунуть в CentOS бинарник от Gentoo — не катит, версия glibc не соответствует, а статически nginx не собирается.

Даже не знаю, куда дальше копать.

У кого-нибудь под CentOS 6.2 gzip в nginx работает?

Конфиги приводить смысла нет, т.к. в разных вариантах пробовал, но, например, такой на базе дефолтового:

user  nginx;
worker_processes  10;
worker_rlimit_nofile 100000;
error_log   /var/log/nginx/error.log;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
    use epoll;
}
http {
    include       /etc/nginx/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"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;
    server_tokens   off;
    gzip            on;
    gzip_static     on;
    gzip_comp_level 5;
    gzip_min_length 1024;
    keepalive_timeout  65;
    limit_conn_zone   $binary_remote_addr  zone=addr:10m;
    server {
        limit_conn addr 10;
        listen       80;
        server_name  _;
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
        error_page  404              /404.html;
        location = /404.html {
            root   /usr/share/nginx/html;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
}

Если что, тестирую на статическом html размером 70 кбайт.

Уже не знаю, куда ещё копать.

★★★★★

А если попробовать ldd посмотреть на генте и на центоси? Может, скомпилено без поддерки этого?

Shtsh ★★★★
()
Ответ на: комментарий от Shtsh

nginx — монолитный бинарник, у него нет внешних .so-модулей. При чём, судя по параметрам компиляции в Gentoo, gzip (не gzip_static) компилируется всегда. В опциях компиляции соответствующего --with нету.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

Но --without-http_gzip_module вроде бы есть?
Работает вроде бы в любом случае через zlib.
А вытащить соответствующий src.rpm и посмотреть?

ABW ★★★★★
()

вот с такими флагами копиляции gzip работает:

--prefix=/usr --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error_log --http-log-path=/var/log/nginx/access_log --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --user=nginx --group=nginx --with-cc-opt=-I/usr/include --with-ld-opt=-L/usr/lib --with-http_addition_module --with-pcre --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_realip_module --with-http_stub_status_module --with-http_xslt_module --with-http_ssl_module --without-http_empty_gif_module --without-http_fastcgi_module --without-http_scgi_module --without-http_split_clients_module --without-http_upstream_ip_hash_module --without-http_userid_module --without-http_uwsgi_module --without-mail_imap_module --without-mail_pop3_module --without-mail_smtp_module

kam ★★
()
Ответ на: комментарий от kam

вот с такими флагами копиляции gzip работает:

В CentOS так:

configure arguments: --user=nginx --group=nginx --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --with-http_secure_link_module --with-http_random_index_module --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module --with-http_perl_module --with-mail --with-mail_ssl_module --with-ipv6 --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --add-module=/builddir/build/BUILD/nginx-1.2.1/nginx-upstream-fair

KRoN73 ★★★★★
() автор топика

У меня работает. nginx 1.2.1 ставил отсюда, конфиг дефотный плюс

    gzip  on;
    gzip_http_version 1.1;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_min_length  10;

Только проверял не вгетом, а F5 в браузере. Результат просматривал в wireshark. А с вгетом действительно не пашет.

d_a ★★★★★
()
Ответ на: комментарий от d_a

А с вгетом действительно не пашет.

Очень странно, учитывая, что под Gentoo в nginx-1.2.1 никаких проблем с wget'ом нет. Как и с ab (тоже gzip не работает под CentOS).

Как это так хитро nginx в CentOS собран?

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

А это официальная сборка с nginx.org, все вопросы Сысоеву :)

Вообще, чудес не бывает, если действительно нужно чтобы работало с wget, сиди разбирай трафик из вгетов и браузеров в wireshark, сравнивай все поля и ищи разницу. Сам не осилю, ибо www не занимаюсь ни в каком виде.

d_a ★★★★★
()
Ответ на: комментарий от d_a

Вообще, чудес не бывает, если действительно нужно чтобы работало с wget

Как минимум, нужно, чтобы работало с ab — для расчётов производительности.

И, да, чудес не бывает, под Gentoo почему-то всё работает прекрасно, блин :-/

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

На всякий случай добавлю, что делал так:

1) Редактировал html, чтобы она перекачалась заново (без редактирования nginx просто отдаёт какой-то код, типа Not Changed вместо контента)

2) Чистил трафик в WS

3) Нажимал F5 (ff/opera)

4) В WS отчётливо видно что контент отдаётся в gzip (Content-Encoding: gzip, столько-то принято байт зажатых, столько-то принято разжратых, и т.д.)

Может это поможет.

d_a ★★★★★
()
Ответ на: комментарий от blackst0ne

Не-а. Забил на nginx на этой машине и буду отдавать контент через lighttpd.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от blackst0ne

Нет. Даже прямо с машины с сервером :)

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

Опять же, nginx под Gentoo отдаёт gzip без всяких --user-agent. Вряд ли в Gentoo его патчили :) Скорее всего, проблема, всё же, в сборке под CentOS.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

В сентоси (вернее в федоре) тоже накладывают патчи. Откуда nginx (в стандартных репах его нет) и какая версия сентось/nginx ?

Попытаюсь воспроизвести в виртуалке. На рабочих серваках у меня nginx-а нет

at ★★
()
Ответ на: комментарий от at

Откуда nginx (в стандартных репах его нет)

Точно нет? Просто я машинку ту не администрирую, «sudo yum install nginx» — и всё. Когда 1.3.1 «не взлетел», стукнул администратору, тот поставил 1.2.1 stable.

и какая версия сентось/nginx ?

CentOS release 6.2 (Final)

nginx сперва 1.3.1

Name        : nginx
Arch        : x86_64
Version     : 1.3.1
Release     : 1.el6
...
Repo        : CentALT

, потом 1.2.1


Name        : nginx-stable
Arch        : x86_64
Version     : 1.2.1
Release     : 1.el6
...
Repo        : installed
From repo   : CentALT

KRoN73 ★★★★★
() автор топика

Сейчас добавил для теста на сервере в nginx.conf:

gzip            on;
gzip_static     on;
gzip_comp_level 5;
gzip_min_length 1024;
gzip_types text/plain application/xml application/x-javascript text/css;
После добавления вышеуказанных строк контент отдаётся сжатым.
 Content-Encoding: gzip

Информация об nginx:

nginx version: nginx/1.0.15
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-52)
TLS SNI support disabled
configure arguments: --user=nginx --group=nginx --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module --with-http_perl_module --with-mail --with-file-aio --with-mail_ssl_module --with-ipv6 --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --with-ld-opt=-Wl,-E

ps: как посмотреть в rhel-based, из какого репозитария был установлен пакет?

blackst0ne ★★★★★
()
Ответ на: комментарий от blackst0ne

nginx version: nginx/1.0.15

Ещё на другой машине 1.1.11 под CentOS 5.8 тоже нормально отдаёт.

ps: как посмотреть в rhel-based, из какого репозитария был установлен пакет?

yum info <пакет>, как я понимаю.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от blackst0ne

ps: как посмотреть в rhel-based, из какого репозитария был установлен пакет?

Всё, вспомнил про repoquery.

Name        : nginx
Version     : 1.0.15
Release     : 1.el5.art
Architecture: x86_64
Size        : 1027649
Packager    : None
Group       : System Environment/Daemons
URL         : http://nginx.net/
Repository  : atomic
Summary     : Robust, small and high performance HTTP and reverse proxy server
Description :
Nginx [engine x] is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3
proxy server written by Igor Sysoev.
blackst0ne ★★★★★
()
Ответ на: комментарий от KRoN73

yum info <пакет>, как я понимаю.


Для установленного пакета в поле Repo будет installed.

blackst0ne ★★★★★
()
Ответ на: комментарий от KRoN73

В Вашем случае с From repo : CentALT. Смотрите /etc/yum.repos.d

at ★★
()
Ответ на: комментарий от at

У меня заработал так

А у меня, увы, не работает :) Т.е. работает под Gentoo с nginx-1.2.1 и в CentOS 5.8 с nginx-1.1.11, но не работает в CentOS 6.2 с nginx 1.2.1 и 1.3.1

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

Если версия nginx некритична попробуйте поставить с epel.

cat /etc/centos-release 
CentOS release 6.2 (Final)
yum info nginx

Name        : nginx
Arch        : i686
Version     : 1.0.15
Release     : 2.el6
Size        : 982 k
Repo        : installed
From repo   : epel
at ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.