nginx

압축을 지원하지 않는 원본일 경우 Proxy에서 압축

꺼비72 2024. 4. 29. 10:16
반응형

압축을 지원하지 않는 org3 구성

 

server {
    listen       80;
    server_name  org3.t.skcdn.com org3 ;

    access_log  /var/log/nginx/org3.log  my_log;
    add_header Cache-Control 'max-age=120';


    location / {
      root   /usr/share/nginx/html/;
    }
}

 

 

relay에 압축설정 및 org3으로 upstream구성

 # gzip config
    gzip on;
    gzip_types application/vnd.apple.mpegurl text/plain text/css application/json application/x-javascript text/javascript;
    gzip_min_length 100;
    gzip_http_version 1.1;
    gzip_buffers      16 8k;
    gzip_comp_level   4;
    gzip_static on;
 # brotli config
    brotli on;
    brotli_static on;
    brotli_comp_level  11;
    brotli_types application/vnd.apple.mpegurl text/plain text/css application/json application/x-javascript text/javascript;
    brotli_min_length 100;
    brotli_buffers   16 8k;
	
   location / {
   proxy_pass http://org3;
 }

 

 

(테스트) 원본은 압축을 지원하지 않으나 relay에서 압축해 client에 전달, 응답은 Plain, Cachekey는 gzip으로 저장됨

# curl org3/1.json -H "accept-encoding: gzip" -I
HTTP/1.1 200 OK
Server: nginx/1.25.4
Date: Sat, 27 Apr 2024 17:23:14 GMT
Content-Type: application/json
Content-Length: 4346
Last-Modified: Wed, 21 Feb 2024 06:27:24 GMT
Connection: keep-alive
ETag: "65d597cc-10fa"
Cache-Control: max-age=120
Accept-Ranges: bytes

# curl relay/1.json -H "accept-encoding: gzip" -I
HTTP/1.1 200 OK
Server: nginx/1.25.4
Date: Sat, 27 Apr 2024 17:28:06 GMT
Content-Type: application/json
Connection: keep-alive
Vary: Accept-Encoding
Last-Modified: Wed, 21 Feb 2024 06:27:24 GMT
ETag: W/"65d597cc-10fa"
Cache-Control: max-age=120
X-CACHE-STATUS: MISS
Content-Encoding: gzip

# head -n 15 /var/cache/nginx/3/1a/88e8b9e64fbc7833d180cdb7a6e251a3
6-f̗▒e▒5-fSʪ▒gz"65d597cc-10fa"
KEY: relay/1.jsongzip
HTTP/1.1 200 OK
Server: nginx/1.25.4
Date: Sat, 27 Apr 2024 17:28:06 GMT
Content-Type: application/json
Content-Length: 4346
Last-Modified: Wed, 21 Feb 2024 06:27:24 GMT
Connection: keep-alive
ETag: "65d597cc-10fa"
Cache-Control: max-age=120
Accept-Ranges: bytes

두번 요청하면 HIT됨 (gzip되지 않은 contents가 HIT됨)
# curl relay/1.json -H "accept-encoding: gzip" -I
HTTP/1.1 200 OK
Server: nginx/1.25.4
Date: Sat, 27 Apr 2024 17:31:55 GMT
Content-Type: application/json
Connection: keep-alive
Vary: Accept-Encoding
Last-Modified: Wed, 21 Feb 2024 06:27:24 GMT
ETag: W/"65d597cc-10fa"
Cache-Control: max-age=120
X-CACHE-STATUS: HIT
Content-Encoding: gzip

'nginx' 카테고리의 다른 글

원본 압축관련 최종 nginx proxy설정  (0) 2024.04.29
gzip 최대 압축지원  (0) 2024.04.29
gunzip을 사용해 Cache key절약  (0) 2024.04.29
accept-encoding nomalization  (0) 2024.04.29
nginx gzip, brotli (ngx_gzip, ngx_brotli) 설정  (0) 2024.04.29