Nginx Gzip 사전 압축 모듈이 작동하지 않는 이유는 무엇입니까?


11

현재 모든 정적 파일을 제공하도록 Nginx를 설정하려고합니다. 그것들은 전혀 자주 변경되지 않기 때문에 gzip_static 모듈을 사용하여 cpu 시간을 절약하고 더 나은 압축을 허용하기 위해 파일의 사본을 gzip으로 미리 압축 할 수 있기를 원합니다.

나는 Nginx를 컴파일 --with-http_gzip_static_module하고 정적 파일을 제공하도록 설정했지만 지금까지 아무런 문제가 없습니다. 나는 정적 Gzip으로 압축 실제로 나는 두 개의 파일을 만들 수 있도록, 작업,되었는지 확인 테스트를 원하고 만들어 test.txttest.txt.gz. 각 파일의 첫 번째 줄에는 파일이 압축되었는지 여부가 표시되며 줄 바꿈과 256 개의 임의 문자가 있습니다 (두 파일 사이에 다릅니다).

파일의 수정 시간과 gzipped 대응 파일이 동일해야한다는 것을 읽었으며 다음 두 가지를 모두 시도했습니다.

touch test.*
touch -r test.txt test.txt.gx

내 로컬 컴퓨터에서 curl로 테스트하고 있습니다.

curl $URL/test.txt

이것은 잘 작동합니다. 사전 압축하지 않은 버전을 다시 얻었지만이 작업을 수행 할 때 :

curl -H "Accept-Encoding: gzip" $URL/test.txt | gunzip

나는 또한 내가 precompress하지 않았다 버전을 다시 얻을. gzip off내 설정 을 시도했지만 nginx.conf차이가 없습니다. 나는 또한 Nginx를 다시 컴파일 --without-http_gzip_module했으며 그 차이도없는 것 같습니다 .Nginx는 여전히 사물을 gzip으로 압축합니다.

나는 Nginx를 처음 접했지만 실제로는 상실되었습니다.

출력은 다음과 같습니다 ./nginx -V

built by gcc 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC) 
configure arguments: --sbin-path=$SOMEPATH/nginx --prefix=$SOMEPATH --user=$ME --group=$MYGROUP --with-http_gzip_static_module --without-http_gzip_module

그리고 여기 내 nginx.conf

worker_processes  1;
events {
    worker_connections  1024;
}
error_log  logs/error.log;
pid        logs/nginx.pid;
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"';
    gzip_static on;
    sendfile        on;
    keepalive_timeout  65;
    access_log  logs/access.log;
    server {
        listen       XXXX;
        server_name  foo.bar.com;
        location / {
            root   html;
        }
        error_page  404 404.html;
        error_page   500 502 503 504 50x.html;
    }
}

어떤 도움이라도 대단히 감사합니다!

답변:


8

귀하의 질문에 이것을 언급하지는 않았지만 공유 호스트에서 다른 Nginx 뒤에 프록시 Nginx를 실행하고 있다는 것은 좋은 권위입니다. ;)

내가 쓰는 시점에서 Nginx의 gzip 모듈은 기본적으로 HTTP 1.1을 사용하지만 Nginx는 백엔드 서버와 통신 할 때 HTTP 1.0 만 사용할 수 있으므로 솔루션은 gzip_http_version다음 nginx.conf과 같이 설정 됩니다 .

gzip_http_version 1.0;

변경 후 Nginx를 다시 시작하면 사업을 시작해야합니다.


놀랄 만한! 이것을 어떻게 알았습니까?
Jürgen Paul
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.